20210906のlaravelに関する記事は4件です。

Target class [〇〇〇TableSeeder] does not exist. って出てきたときにやったこと。

事象 Seederファイルに目的のデータを追加して、 DatabaseSeeder.phpにも追加。 php artisan migrate:refresh --seed を実行。 Illuminate\Contracts\Container\BindingResolutionException : Target class [XxxxxTableSeeder] does not exist. なぜかエラーに。 typoを疑い、探してみるも見つけられず。 原因 composerのリロードが必要だったようです。 composer dump-autoload # リロードした後に再作成。 php artisan migrate:refresh --seed 今度は問題なく再作成することができました。 〜〜 does not exist のようなエラーは、変にググるよりキャッシュを疑った方が効率的ですね! php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear composer dump-autoload
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Laravel】Bladeで共通で参照できるグローバルな変数を定義する。

自分用のメモとして残します。 各コントローラでわざわざviewに渡す変数を定義するのは面倒。 AppServiceProviderのbootメソッドで、全てのviewで参照できる変数をに定義する方法をメモ。 やり方 app\Providers\AppServiceProvider.php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Auth; class AppServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { } /** * Bootstrap any application services. * * @return void */ public function boot() { // view()->composer内でやっているのは、Authの情報を取るためなので、なくてもOK view()->composer('*', function ($view) { $globalArg_hoge = null; if (Auth::guard('user')->check()) { $globalArg_hoge = 'HOGE'; } // ポイント:view()->shareで変数を定義してあげることで、冗長にならなくなる。 view()->share([ 'globalArg_hoge'=> $globalArg_hoge, ]); }); } } 以上です。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LaravelでonDelete('cascade')を書けば勝手にリレーション先の子供が削除されるわけではない

今回発見があったので備忘録。 usersテーブルに紐づくpostsテーブルがあったとして、マイグレーションファイルには $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); こう書けば、勝手に削除されると思ってました。。。 この場合で削除されるのは、親(User)を物理削除した場合のみ。 論理削除だと、削除されないようなのです。 自動で削除してくれるのは、物理削除によって親が完全にDB上から消えた場合であって 論理削除のようにまだデータが残っている場合、DBは親が削除されたとはみなさないようです。 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel7でwhere not(<>)が上手く動作しなかった

laravelでdelete_flagが1以外のデータを取得しようとした際に以下のSQLでは上手く取得出来なかったので備忘録。 ※delete_flagには、0、1、NULLのいずれかが入っている。 User::where('delete_flag', '<>', '1')->get(); これだと、何故か1件のデータもヒットせず。 User::where('delete_flag', '<>', '1') // この一行を追加 ->whereNotNull('delete_flag') ->get(); これで動きました! 結局Nullの扱いをどうするかも指定してあげないといけなかったみたいです。。。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む