nekyo のすべての投稿
【Laravel 5.4】ファサード の作り方
クラス作成
場所はサービスプロバイダ側でひもづけできていれば、必ずしも app/Services である必要はなさそう。app/Services/Payment.php
[crayon-66383338f0598993747790/]
サービスプロバイダ作成
artisan コマンドでスカフォールド[crayon-66383338f05a3802612268/]
app/Providers/PaymentServiceProvide.php
[crayon-66383338f05a8800036513/]
ファサードクラスを作成
app/Facades/Payment.php
[crayon-66383338f05ae228793527/]
サービスプロバイダと別名の設定を追加する。
config/app.php
[crayon-66383338f05b3180597741/]
使い方
これで以下の様に使えるようになる。use はファサードを指定する。
[crayon-66383338f05b8908957222/]
【Laravel 5.4】validationのロケールで、テーブルのフィールド名を日本語訳する方法
まずバリデーションエラーを日本語化しておく
resources/lang/en を ja にコピーして中味を日本語訳するかここら辺(Laravelの日本語レポジトリの作成とか)から、一旦 5.3 用を入れて差分修正しておく。
config/app.php を編集して、ja のロケール設定もしておく。
フィールド名の定義
attributes に記述する。resources/lang/ja/validation.php
[crayon-66383338f19ae373387772/]
フィールド名を変換する
バリデーションエラーは勝手に変換してくれるけど、テーブルのフィールド名も定義した attributes の日本語訳で表示したい。ローカライズは trans 関数を使う。
validation.php の attributes にある email を指定する場合は以下のようなキーを指定する。
[crayon-66383338f19b8337163083/]
訳がなければキーの値がそのまま('validation.attributes.email')返る。 例えばこんな関数を作ってラベルをまとめて日本語化したりすると
table にテーブル名を渡しただけで自動でテーブル一覧を表示したりして
TableController.php
[crayon-66383338f19bc040441357/]
table.blade.php
[crayon-66383338f19c7571489033/]
data が一件もなければ「データなし」と表示。
ループの一回目にタイトル行を表示
ループの最後にテーブルのクローズタグを表示。
あとは data 行分、fields のカラム分を表示。
【Laravel 5.4】マイグレーションで postgresql に テーブル カラム コメント を付ける。
はじめに
最近は、DBからER図をリバース作成するツールとかがある。しかし laravel のマイグレーションのコメントは MySQL しか対応していない。
(MySQL はテーブル作成時にコメントつけられるからだろうな。)
ポスグレでマイグレーションの度にコメントが消えると、毎回コメントを入れ直す必要がでてきて、リバース作成ツールとか使えないのもなんなのでちょっと対応策を考えてみた。
Postgresql だったらテーブル・カラムコメントを後づけ
ポスグレの場合 ->comment() を使っても何も起こらないので mysql だった場合も想定して ->comment() もつけておく。もし config/database.php の default が pgsql だったら、テーブル・カラムにコメントを付けるSQLを発行する。
2014_10_12_000000_create_users_table.php
[crayon-66383338f1d58211699913/]
早く Postgresql も comment 対応して欲しい。
MySQLがOSS界ではスタンダードだけれど、トランザクションやバキュームの関係から商用ではポスグレを選択するケースも少なくないので、できれば早く標準でサポートして欲しいなぁ。Bash on Windows で php7.2 + (apache2|nginx) + laravel 5.5
先ずは bash on windowsインストール
Windows10 上に Linux 環境(bash on windows(以降 bow と記載))を作成する。 [スタートアップ]右クリック→[アプリと機能]→右上の[プログラムと機能]→[Windows の機能の有効化または無効化]ダイアログが表示されるので ☑ Windows Subsystem for Linux (Bata) をチェック → [OK] [スタートアップ]→[設定]→[更新とセキュリティ]→[開発者向け]→◎ 開発者モード
「開発者モードをオンにしますか?」と聞かれるので「はい」を選択 [スタートアップ]→[Windows システムツール]→[コマンドプロンプト]してプロンプトが出たら「bash」と入力
bow に php7.2 インストール
php が入っていないことが前提[crayon-66383338f202a248399141/]
[crayon-66383338f2032973295764/]
composer インストール
[crayon-66383338f2036217192111/]
laravel インストーラ インストール
root ユーザで実行しようとすると怒られる。[crayon-66383338f203a008214747/]
bowのファイルの場所は?
C:\Users\ユーザ名\AppData\Local\lxss\rootfs が bow のルートになる。ただし、Windows側から直接ファイルを修正すると権限が変わって
消せなかったり参照できないファイルになる場合があるので、
bow コンソールか ssh で修正する方が無難。
Webサーバーインストール
apache2
[crayon-66383338f203f963291784/]
/etc/apache2/apache2.conf
[crayon-66383338f2043929155742/]
.htaccess を有効にするなら
/etc/apache2/sites-available/000-default.conf
[crayon-66383338f2046160535435/]
[crayon-66383338f204a440873709/]
nginx
[crayon-66383338f204d207620471/]
- php-fpm の設定ファイルは /etc/php/7.2/fpm/pool.d/www.conf だが、nginx インストール後であれば、user, group は www-data になっていると思うので修正の必要はない。
- /etc/nginx/site-enabled/default は /etc/nginx/site-available/default のシンボリックリンクなので、どちらを編集しても良い。
動いていないので apache2 を使ってください。また何かわかったら追記します。 ブラウザから localhost で接続すると参照可能。
mysqlインストール
[crayon-66383338f2053864192016/]
トラシュー
以下のようなエラーが出たらキーをダウンロード[crayon-66383338f2056657389506/]
おまけ
sshd起動
[crayon-66383338f205a254329814/]
【Laravel 5.4】artisan 主要な使い方チートまとめ
はじめに
laravel では何をするにも artisan を良く使うが、毎回調べるのも何なので、よく使うコマンドをチート的にまとめておく。
プロジェクト作成
[crayon-66383338f24d7790935514/]
コントローラ作成
[crayon-66383338f24df700027599/]
モデル作成
[crayon-66383338f24e3041703917/]
テーブル作成
[crayon-66383338f24e7085589059/]
No such file or directory と表示され、エラーになったら、とりあえず以下を実行してみる。
[crayon-66383338f24eb132553888/]
YYYY_MM_DD_HH_II_SS_create_admins_table.php
[crayon-66383338f24ee033680741/]
マイグレーション実行
実際のテーブルが作成される[crayon-66383338f24f4211704164/]
シーダー作成
[crayon-66383338f24f7744732695/]
AdminTableSeeder.php
[crayon-66383338f24fc786801202/]
呼び出し部分を記述する。
DatabaseSeeder.php
[crayon-66383338f2500604854863/]
シーダー実行
[crayon-66383338f2504025130808/]
キャッシュクリア
[crayon-66383338f2508744295786/]
パブリッシュ
[crayon-66383338f250c342494824/]
認証クイックスタート
[crayon-66383338f250f276558980/]
【Laravel 5.4】モデルのフィールドの暗号化・復号化
はじめに
最近いろいろ個人情報保護の観点から、DBに保存する特定フィールドは暗号化して欲しいとのニーズが多くなってきている。しかも AESアルゴリズム を使えとか。 幸い Laravelの Cryptファサード は AES-256-CBC アルゴリズムなので、モデル側のセッター、ゲッターに機能を実装して、通常のアルゴリズムからは透過的に、DB保存の暗号化・復号化を実現する。
実装方法(アクセサ・ミューテタを使う(laravel推奨))
- まずは通常のモデルを作成する。
- Model 側に Name フィールド用のアクセサ・ミューテタを定義する。
- 暗号化、復号化を実装する。
Admin.php
[crayon-66383338f2964365599803/]
もちろんシーダー側も
シーダー側も予め暗号化しておく必要がある。AdminTableSeeder.php
[crayon-66383338f296d262478881/]
ちなみに use Crypt; を有効にするとシーダーでエラーになる。
[crayon-66383338f2974430085222/]
その後の顛末
laravel の Crypt は同じ文字列であっても、暗号化のたびに暗号後の文字列が異なる。つまり、入力された文字列を暗号化して比較しようとしても一致しない。
もちろん復号化すれば、復号前の文字列が異なっていても両方とも正しく暗号前文字列に戻る。 しかたないから、検索が必要なキーに対しては、暗号後の文字列が一致する自前の暗号化/復号化クラスを自作した。
Crypt ファサードのオプションでなんとかならんかね。