Vaše databáze a definice modelů vypadají dobře, stejně jako váš kód pro přidání kategorie do článku. Váš kód pro přidání článku do kategorie je však trochu mimo.
Za prvé, neexistují žádné $category->articles()
metoda. Pro přístup k souvisejícím objektům použijte svůj definovaný vztah:$category->categorizable()
. Také atribut vztahu, $category->categorizable
bude obsahovat načtený související objekt a automaticky to bude buď Article
nebo Service
objekt, v závislosti na tom, co souvisí.
Za druhé, toto je morphTo()
strana vztahu; chová se jako belongsTo()
a má podobné metody. Například neexistuje žádné save()
metodu, ale máte associate()
metoda. To znamená, že musíte nejprve vytvořit svůj článek a poté jej přiřadit ke kategorii. Také associate()
se automaticky neukládá, takže to musíte také zavolat.
$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);