雑多なブログ

音楽や語学、プログラム関連の話題について書いています

Laravel

Laravel Fortifyでマルチログインを実装する時のポイント

ネットに転がっているチュートリアルやドキュメントは断片的な情報が多かったので、自分が実現したい要件に沿った実装はどうすれば良いのか、というところがわかるまで随分時間がかかった。 細かい事はそのうちサンプルの実装を作ってみようと思うけど、ポイ…

Laravel Fortify/Jetstream でマルチログインの実装(調査)

Laravel8 Fortify/Jetstream で、マルチログイン(ユーザーサイトと管理サイト別々に認証)を実現する方法について調べている。 結論から言うと、Laravel Fortify/Jetstreamは非対応。 なので、マルチログイン実現するためには、実装のカスタマイズが必要な…

Laravel Sail を使ってみる。

Laravel Sail とは、Laravel 用のDockerコンテナを操作するコマンドラインインターフェースのことらしい。 とりあえず、初期設定だけ確認してみた。 まずは composer のアップデートを。 $ composer selfupdate 次にLaravelのプロジェクト作成。 $ composer…

Laravel - SoftDeletesを適用したモデルクラスでテーブル名のエイリアスが使えない

SoftDeletesを適用したモデルクラスでクエリーを実行すると、 カラムが存在しない、という内容のSQLエラーが発生する。 >>> \App\Models\Comment::from('comments', 'c')->where('c.id', '<>', 1)->get() Illuminate\Database\QueryException with message '…

PHP - Laravelでuuid(v4)を生成する。

Laravel5.6以降は Str::uuid() でuuid(v4)を生成する事ができる。 use Illuminate\Support\Str; $uuid = (string) Str::uuid(); 独自に実装する必要もなく、別途ライブラリをインストール必要もないので楽ちん。 Laravel公式ドキュメント https://laravel.co…

Laravel6以降 - 何にも該当しないルーティング

ルーティング定義のどれにもあてはまらない URLにアクセスされた場合に下記が利用できる。 Route::fallback(function () { // }); laravel.com

LaravelでSSL&ベースURL固定

httpsを強制 URL::forceScheme('https'); 指定したベースURLを強制 $root_url = 'https://example.com'; URL::forceRootUrl($root_url); そんでもって、上記は app/Providers/AppServiceProvier.phpのboot メソッドに書く。 のが一般的な模様。

Laravel - DB::transaction() の返り値は何?

DB::transaction()の実装は、ManagesTransactionsというtraitで実装されているようだ。 実装を見てみると、一つ目の引数で指定しているコールバック関数の返り値をそのまま返していることが分かる。 https://github.com/laravel/framework/blob/8.x/src/Illu…

Laravel6以降: ログの設定を調整しよう!

Laravel6.0以降、ロギングに関して下記設定がデフォルトに設定されていた。 "laravel.log" にのみ書き込まれる dailyではないので、全ての年月のログが同一ファイルに書き込まれる ログ保持期間が14日 このままだと色々不都合がありまくるので、次の通り設定…

Laravelでviewのパスを一時的に変更する。

Laravelを使用していて、一時的にbladeテンプレートの参照ディレクトリを変更したい事があったので、その方法について調べた。 Laravel5〜6にて確認。それ以前のLarvelではやり方が異なる可能性があるので注意。 コントローラーの実装例 public function ind…

Laravel: コンソールコマンドとして実行されいているか判別

コントローラーのコンストラクターに処理を記述している場合に、 下記コマンドを実行するとコントローラーのコンストラクターに記述していた処理が実行されてしまう現象に遭遇しました。 php artisan route:list それならばと、コンソールコマンドで実行され…

Laravel: 現在の環境を確認する

現在の環境情報は下記で取得できる。 App::environment(); これを使えば、本番環境と開発環境で処理を分けたい場合の判定に利用できる。