さて、あなたのデータベースとあなたのモデル定義は、記事にカテゴリーを追加するためのあなたのコードと同様に、うまく見えます。ただし、カテゴリに記事を追加するためのコードは少しずれています。
まず、$category->articles()
はありません。 方法。関連するオブジェクトにアクセスするには、定義された関係を使用します:$category->categorizable()
。また、関係属性$category->categorizable
ロードされた関連オブジェクトが含まれ、自動的にArticle
になります またはService
何が関連しているかに応じて、オブジェクト。
次に、これはmorphTo()
です。 関係の側面; belongsTo()
のように動作します 、および同様の方法があります。たとえば、save()
はありません メソッドですが、associate()
があります 方法。つまり、最初に記事を作成してから、それをカテゴリに関連付ける必要があります。また、associate()
自動的に保存されないので、それも呼び出す必要があります。
$article = new App\Article();
$article->title = 'This is an article title.';
$article->save();
$category = App\Category::find(1);
$category->categorizable()->associate($article);
$category->save();
// showing use of relationship attribute
$related = $category->categorizable;
echo get_class($related);