閲覧ありがとうございます。
Laravelの初学者です。
現在、Laravelの自作アプリケーションを作成しながら勉強をしています。
環境
言語 html,css(bootstrap5),js,php(Laravel8)
エディター:vscode
os:macX
ログイン機能 : Laravel/uiを流用
データベース:mysql
テーブル:users,tags, ...
やりたいこと
AppServiceProviderでTagテーブルから値を取り出し、レイアウトファイル(blade)内で取り出した値を使用しています。
しかし、アカウントユーザー作成直後は、Tagテーブルに1つの値も挿入されていないので、「Trying to access array offset on value of type null」とエラーが出ます。
解決策として
「レイアウトファイル内でifを使用し、値がないときは表示自体しない」
など考えましが、自分の中の理想は
「Userアカウントが作成された際に、tagテーブルにも値を挿入する。(各カラムの値はデフォルト値で)」です。
技術的に可能でしょうか。
[user]
↑アカウントユーザー作成時に、↓タグテーブルにも値を入れる。(user.id == tag.user_id)
[tag]
もっといいやり方があるなど、
お手数ですが、アドバイスをお願い致します。
エラー
Trying to access array offset on value of type null (View: /Applications/MAMP/htdocs/Prototype_diary/resources/views/layouts/app.blade.php)
実際のコード
↓AppServiceProviderで$tagsを取得する。
php:AppServiceProvider
1public function boot() 2 { 3 view()->composer('*', 4 function ($view) { 5 6 $tagModel = new Tag(); 7 $tags = $tagModel->where('user_id', \Auth::id())->first(); 8 } 9 ); 10 }
↓app.blade.phpで{{ $tags['title'] }}のように使ってます。
php:app.blade.php
1<div id="tags"> 2 <div class="card-body bg-transparent p-0"> 3 <h4 class="card-title">tags</h4> 4 <button class="btn btn-outline-primary" data-bs-target="#TagSettingModel" 5 data-bs-toggle="modal"> 6 <i class="me-1 fa-solid fa-pen"></i> 7 </button> 8 </div> 9 <div class="card-footer bg-transparent p-0"> 10 <div class="row m-0"> 11 <div class="col-6 px-1"> 12 <div class="card card-body tag p-0"> 13 {{ $tags['title'] }}<br> 14 <span style="font-size:35px;"></span>Days 15 </div> 16 </div> 17 </div> 18 </div> 19 </div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/17 00:26
2022/03/18 10:40