Trying to get property 〇〇 of non-object と出たら、「オブジェクトがないのに、プロパティを参照しようとしているよ」という意味。
Trying to get property 〇〇 on null と出たら、「nullなのにプロパティを読み込もうとしているよ」という意味です。

手っ取り早く治す方法としては、表示しようとしているプロパティの後に【??”代わりの値”】を入れてあげることです。
例を使って、説明していきます。
こちらがエラーが起こったときのコードだとします。
| 1 | {{$post->user->name}} | 
次のようにコードを修正します。
| 1 | {{$post->user->name??'匿名'}} | 
コードの意味
postに紐づいたuserのnameを表示してね。
userのnameが空っぽのときには、【匿名】といれて。
すると、画面が表示されるようになります。
【画面例】

この方法は、NULL合体演算子というPHPの機能を使った方法になります。
なお、もし【匿名】といれず、空白にしておきたい場合には、下記のようにします。
| 1 | {{$post->user->name??''}} | 
こうすれば、??” の4文字でエラーが治ります。
データに値が入っていない可能性がある場合などに、使える解決法です。
エラーが解決したら嬉しいです。
なお、根本的な修正にはならないので、そのあたりはご注意を。

根本的に直すにはなぜnullになってしまうのかを探って、コードを修正する必要があります。
カラムを追加したり、テーブルの構造を変えた場合には、変更前のレコードを削除すると治ったりします。
Attempt to read property “name” on nullエラーについて
なお、ログインしていない状態で、navigation.blade.phpファイルが含まれたページを表示しようとすると、下記のようなエラーになります。

エラーの原因は、ログイン前の状態でログインユーザーの名前やメールアドレスを表示しようとしているためです。
こちらも上記と同じ方法で修正できますが、下記のように修正したほうが良いです。
【修正前】
| 1 | <div> {{ Auth::user()->name }} </div> | 
【修正後】
| 1 | <div>@if(Auth::check()) {{ Auth::user()->name }} @endif</div> | 
これによって、「もしユーザーがログインしていれば」という条件を追加することができます。

上記は名前ですが、メールアドレスを表示する箇所もあります。検索して修正してくださいね。
navigation.blade.phpファイルには、全部で3か所、上記のif文をいれたほうが良いコードがあります。
 
  
  
  
  
