Bene, il tuo database e le definizioni del tuo modello sembrano a posto, così come il tuo codice per aggiungere una categoria a un articolo. Tuttavia, il tuo codice per l'aggiunta di un articolo a una categoria è leggermente errato.
Innanzitutto, non esiste $category->articles()
metodo. Per accedere agli oggetti correlati, usi la tua relazione definita:$category->categorizable()
. Inoltre, l'attributo di relazione, $category->categorizable
conterrà l'oggetto correlato caricato e sarà automaticamente un Article
o un Service
oggetto, a seconda di ciò che è correlato.
Secondo, questo è il morphTo()
lato della relazione; si comporta come belongsTo()
, e ha metodi simili. Ad esempio, non esiste save()
metodo, ma hai il associate()
metodo. Ciò significa che devi prima creare il tuo articolo e poi associarlo alla categoria. Inoltre, associate()
non salva automaticamente, quindi devi chiamare anche quello.
$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);