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