Bem, seu banco de dados e suas definições de modelo parecem boas, assim como seu código para adicionar uma categoria a um artigo. No entanto, seu código para adicionar um artigo a uma categoria está um pouco errado.
Primeiro, não há
$category->articles()
método. Para acessar os objetos relacionados, você usa seu relacionamento definido:$category->categorizable()
. Além disso, o atributo de relacionamento, $category->categorizable
conterá o objeto relacionado carregado e será automaticamente um Article
ou um Service
objeto, dependendo do que está relacionado. Segundo, este é o
morphTo()
lado da relação; ele se comporta como o belongsTo()
, e tem métodos semelhantes. Por exemplo, não há save()
método, mas você tem o associate()
método. Isso significa que você precisa criar seu artigo primeiro e depois associá-lo à categoria. Além disso, associate()
não salva automaticamente, então você precisa chamar isso também. $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);