おそらく、関係はデータベースに存在しません。
Post
のfillable
アレイに基づいて、キーの命名規則に従っているため、リレーションシップのセットアップ方法が正しいように見え、belongsTo
リレーションシップメソッドの名前は正しいものになります。
$post->product()
はProduct
モデルを返送していません。 Relation
タイプのオブジェクト(BelongsTo
)を返しています。これは、関係を照会するために使用されます。 $post->product
は、既にロードされたリレーションシップを返すリレーションシップの動的プロパティ、またはリレーションシップをロードして結果を返すリレーションシップの動的プロパティになります。
Laravel 5.5 Docs - Eloquent - Relationships - Relationship Methods Vs. Dynamic Properties
関係が設定されている場合、正しく$post->product
null
であることは関係が実際にproduct_id
またはproduct_id
ためproducts
には一致id
がnullであることなく、データベースに存在しません意味します。熱心な関係をロードする良いでしょう:
サイドノートが(外部キー制約を想定していない)
$posts = Post::with('product')->get();
productsテーブルに 'post_id'カラムがありますか?それが'の投稿に外部キーがない場合は、投稿モデル – linktoahref
@linktoahrefの 'product'メソッドの第2引数として外部キー名を' posts'テーブルに 'product_id'があります。 'Post'で' fillable' – lagbox