問題
記事でユーザーの名前をエコーアウトしようとしていますが、 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
ニューステーブルの私の外部キーです。