Е, вашата база данни и дефинициите на вашите модели изглеждат добре, както и кодът ви за добавяне на категория към статия. Въпреки това кодът ви за добавяне на статия към категория е малко по-грешен.
Първо, няма $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);