このエラーは、「オブジェクトがないのに、プロパティを参照しようとしているよ」という意味。
手っ取り早く治す方法は、プロパティの後に【??”代わりの値”】を入れてあげること。
私の例を使って、説明していきます。
まず、こちらがエラーが起こったときのコードと画面。
1 |
{{$post->user->name}} |
postとuserモデルはリレーションでつながっています。
なので、userのnameを呼び出せるはずなのに、出てこない。
理由は、post(投稿)の中に、userがないものが混じっていたから。
Laravel側では、「userのnameが入っていないのもあるのに、どうしたらいいの!?」と混乱してしまっているようです。
そこで、次のようにコードを修正します。
1 |
{{$post->user->name??'匿名'}} |
コードの意味
postに紐づいたuserのnameを表示してね。
userのnameが空っぽのときには、【匿名】といれて。
すると、画面が表示されるようになりました。
この方法は、NULL合体演算子というPHPの機能を使った方法になります。
なお、もし【匿名】といれず、空白にしておきたい場合には、下記のようにします。
1 |
{{$post->user->name??''}} |
データに値が入っていない可能性がある場合など、使える解決法かと思います。
エラーが出て困ったときには、お試しください。
コメント