sql >> Database >  >> RDS >> Mysql

Welsprekende polymorfe relaties gebruiken om gegevens in Laravel te categoriseren

Welnu, uw database en uw modeldefinities zien er goed uit, evenals uw code voor het toevoegen van een categorie aan een artikel. Uw code voor het toevoegen van een artikel aan een categorie is echter een beetje verkeerd.

Ten eerste is er geen $category->articles() methode. Om toegang te krijgen tot de gerelateerde objecten, gebruikt u uw gedefinieerde relatie:$category->categorizable() . Ook het relatiekenmerk, $category->categorizable zal het geladen gerelateerde object bevatten, en het zal automatisch ofwel een Article . zijn of een Service object, afhankelijk van wat gerelateerd is.

Ten tweede is dit de morphTo() kant van de relatie; het gedraagt ​​zich als de belongsTo() , en heeft vergelijkbare methoden. Er is bijvoorbeeld geen save() methode, maar je hebt de associate() methode. Dit betekent dat u eerst uw artikel moet maken en het vervolgens aan de categorie moet koppelen. Ook associate() slaat niet automatisch op, dus u moet dat ook aanroepen.

$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);



  1. Tabel maken met vb.net, mysql

  2. Parallellisme komt naar VACUUM

  3. Een opzoekbesturingselement toevoegen aan een formulier in Access 2016

  4. LAST_INSERT_ID() retourneert altijd 0 (RMySQL) - afzonderlijk verbindingsprobleem