Eh bien, votre base de données et vos définitions de modèle semblent correctes, ainsi que votre code pour ajouter une catégorie à un article. Cependant, votre code pour ajouter un article à une catégorie est un peu décalé.
Premièrement, il n'y a pas de $category->articles()
méthode. Pour accéder aux objets associés, vous utilisez votre relation définie :$category->categorizable()
. En outre, l'attribut de relation, $category->categorizable
contiendra l'objet associé chargé, et il sera automatiquement soit un Article
ou un Service
objet, selon ce qui est lié.
Deuxièmement, c'est le morphTo()
côté de la relation ; il se comporte comme le belongsTo()
, et a des méthodes similaires. Par exemple, il n'y a pas de save()
méthode, mais vous avez le associate()
méthode. Cela signifie que vous devez d'abord créer votre article, puis l'associer à la catégorie. Aussi, associate()
n'enregistre pas automatiquement, vous devez donc l'appeler également.
$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);