sql >> Databasteknik >  >> RDS >> Mysql

Använda vältalig polymorfa relationer för att kategorisera data i Laravel

Jo, din databas och dina modelldefinitioner ser bra ut, liksom din kod för att lägga till en kategori till en artikel. Din kod för att lägga till en artikel i en kategori är dock lite dålig.

För det första finns det inga $category->articles() metod. För att komma åt de relaterade objekten använder du din definierade relation:$category->categorizable() . Även relationsattributet, $category->categorizable kommer att innehålla det laddade relaterade objektet, och det kommer automatiskt att antingen vara en Article eller en Service objekt, beroende på vad som är relaterat.

För det andra är detta morphTo() sidan av förhållandet; den beter sig som belongsTo() , och har liknande metoder. Till exempel finns det ingen save() metoden, men du har associate() metod. Det betyder att du måste skapa din artikel först och sedan associera den med kategorin. Även associate() sparas inte automatiskt, så du måste ringa det också.

$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. Hur väljer man den sista posten i en tabell i SQL?

  2. Hur kan jag skapa en tabell i MySQL som kallas order?

  3. Hur man skapar en sammansatt främmande nyckel i SQL Server (T-SQL-exempel)

  4. Felsökning av Microsoft SQL Server Error 18456