我有我的數據庫MySQL查詢和where子句
# Items
id - name
----------
1 - Item A
2 - Item B
3 - Item C
3桌。
# 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
在Laravel,我能得到他們的特質和價值觀的所有項目使用「屬於關聯」 [$這個 - >屬於關聯(「應用程序\特質」,「trait_id」);在價值模型得到的結果像這樣:
--- Item A
Color: red
Grade: 90%
Size: 4 inches
--- Item B
Color: green
Grade: 45%
Size: 5 inches
.. etc
從這樣的代碼:
$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>';
}
}
不過,我不能做的是,我需要過濾這些結果,爲例子,我只需要的項目,它的顏色是「紅色」及其等級大於70%?
如果你不使用Larave,隨時將它寫在純MySQL的查詢,我會找到一個方法來做到這一點在Laravel時,我的想法..謝謝你
'id'供應中的值表中沒有目的(這是,順便說一句,一個糟糕的名字選擇)。如果使用EAV模型,一個好的提示是爲每個數據類型構建單獨的表。 – Strawberry
@Strawberry其實這是我第一次瞭解EAV模型,上面的所有結構都來自我的頭部,對EAV沒有任何瞭解,我會詳細瞭解它,看看這種方法的最佳做法,謝謝提示 – Ahmad