Nå, din database og dine modeldefinitioner ser fine ud, såvel som din kode til at tilføje en kategori til en artikel. Din kode til at tilføje en artikel til en kategori er dog en smule off.
For det første er der ingen $category->articles()
metode. For at få adgang til de relaterede objekter, bruger du dit definerede forhold:$category->categorizable()
. Også relationsattributten, $category->categorizable
vil indeholde det indlæste relaterede objekt, og det vil automatisk enten være en Article
eller en Service
objekt, afhængig af hvad der er relateret.
For det andet er dette morphTo()
side af forholdet; den opfører sig som belongsTo()
, og har lignende metoder. For eksempel er der ingen save()
metode, men du har associate()
metode. Det betyder, at du først skal oprette din artikel og derefter knytte den til kategorien. Også associate()
gemmer ikke automatisk, så du skal også kalde det.
$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);