解決済み–非オブジェクトのプロパティを取得しようとしています– Laravel

Solved Trying Get Property Non Object Laravel



問題

記事でユーザーの名前をエコーアウトしようとしていますが、 ErrorException: Trying to get property of non-object が表示されます。私のコード:

モデル

1.ニュース







クラスニュース拡張しますモデル
{{
公衆 関数投稿者(()。
{{
戻る $ this->属する(('App User')。;
}
保護された $ table = 'ニュース';
保護された $ fillable = ['newsContent' 'newsTitle' '投稿者'];
}

2.ユーザー



クラスユーザー拡張しますモデル実装AuthenticatableContract
AuthorizableContract
CanResetPasswordContract
{{
使用する認証可能承認可能CanResetPassword;

保護された $ table = 「ユーザー」;

保護された $ fillable = ['名前' 'Eメール' 'パスワード'];

保護された $ hidden = ['パスワード' 'remember_token'];

}

コントローラ

公衆 関数showArticle(($ slug)。
{{
$ article =ニュース:::どこ((「ナメクジ」 $ slug)。->firstOrFail(()。;
戻る見る(('論文' コンパクト (('論文')。)。;
}

{{{{ $ article->投稿者->名前 }}

ブレードの名前を削除しようとすると {{ $article->postedBy }} id を出力しますが、そこに-> nameを追加しようとすると、 Trying to get property of non-object と表示されます。しかし、テーブルにフィールド名があり、 User モデル。私は何かが足りないのですか?



解決

クエリは配列またはオブジェクトを返しますか?ダンプすると、それが配列であり、必要なのはオブジェクトアクセス(->)ではなく配列アクセス([])だけであることがわかる場合があります。





セカンドオピニオン

$ article->ポスター->名前

$ article->ポスター['名前']

次は、belongsToに2番目のパラメーターを追加します。



戻る $ this->属する(('App User')。;

戻る $ this->属する(('App User' 'ユーザーID')。;

ここで user_id ニューステーブルの私の外部キーです。