Bueno, su base de datos y las definiciones de su modelo se ven bien, así como su código para agregar una categoría a un artículo. Sin embargo, su código para agregar un artículo a una categoría está un poco mal.
Primero, no hay $category->articles()
método. Para acceder a los objetos relacionados, utiliza su relación definida:$category->categorizable()
. Además, el atributo de relación, $category->categorizable
contendrá el objeto relacionado cargado, y automáticamente será un Article
o un Service
objeto, dependiendo de lo que se relacione.
En segundo lugar, este es el morphTo()
lado de la relación; se comporta como belongsTo()
, y tiene métodos similares. Por ejemplo, no hay save()
método, pero tiene el associate()
método. Esto significa que primero debe crear su artículo y luego asociarlo con la categoría. Además, associate()
no se guarda automáticamente, por lo que también debe llamar a eso.
$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);