Ich habe 3 Tabellen in meiner DatenbankMysql Abfrage von 3 Tabellen und wo Klausel
# Items
id - name
----------
1 - Item A
2 - Item B
3 - Item C
.
# Traits
id - name
----------
1 - Color
2 - Grade
3 - Size
.
# Values
id - item_id - trait_id - value
----------
1 - 1 - 1 - red
1 - 2 - 1 - green
1 - 3 - 1 - red
1 - 1 - 2 - 90%
1 - 2 - 2 - 45%
1 - 3 - 2 - 80%
1 - 1 - 3 - 4 inches
1 - 2 - 3 - 5 inches
1 - 3 - 3 - 9 inches
In Laravel, konnte ich alle Einzelteile mit ihren Eigenschaften und Werte erhalten mit "belongsTo" [$ this-> belongsTo ('App \ Traits', 'trait_id');] in Value-Modell die Ergebnisse zu erhalten so wie:
--- Item A
Color: red
Grade: 90%
Size: 4 inches
--- Item B
Color: green
Grade: 45%
Size: 5 inches
.. etc
von Code wie folgt:
$items = Items::get();
foreach ($items as $item) {
echo '<h2>'.$item->name.'</h2>';
foreach ($item->values as $value) {
echo '<b>'.$value->trait->name . '</b>: ';
echo $value->value . '<br>';
}
}
Doch was konnte ich nicht tun, ist, dass ich diese Ergebnisse zu filtern, für Beispiele, ich nur Artikel benötigen, das seine Farbe ist "rot" und seine Note größer als 70%?
Wenn Sie nicht Larave verwenden, können Sie es in reinen mysql-Abfragen zu schreiben, kann ich einen Weg finden, es in Laravel zu tun, wenn ich auf die Idee kommen .. Danke
'id' keinen Zweck in der Wertetabelle dient (das ist, btw, eine schlechte Wahl des Namens). Ein guter Tipp, wenn Sie ein EAV-Modell verwenden, besteht darin, für jeden Datentyp separate Tabellen zu erstellen. – Strawberry
@Strawberry Eigentlich ist es das erste Mal, dass ich über EAV-Modell weiß, alle obigen Strukturen kamen von meinem Kopf, ohne etwas über EAV zu wissen, ich lese mehr darüber und sehe, was für eine solche Vorgehensweise am besten ist, danke für den Tipp – Ahmad