sql >> Database teknologi >  >> RDS >> Mysql

Brug af veltalende polymorfe relationer til at kategorisere data i Laravel

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



  1. Bedste praksis:Importer mySQL-fil i PHP; opdelt forespørgsler

  2. Oracle efter sletning af trigger... Hvordan undgår man mutationstabel (ORA-04091)?

  3. Krøllede seler i T-SQL

  4. Hvordan installerer jeg MySQL og Python MySQL-pakken på OS X Leopard? Eller hvordan lærer jeg om at være webudvikler ved hjælp af OS X?