Моя структура базы данных выглядит так (я использую MySQL):
товары:
#------#---------#
| id | int |
#------#---------#
| name | varchar |
#------#---------#
продукты_свойства:
#-------------#-----#
| product_id | int |
#-------------#-----#
| property_id | int |
#-------------#-----#
характеристики:
#-------#---------#
| id | int |
#-------#---------#
| name | varchar |
#-------#---------#
| value | varchar |
#-------#---------#
Можно ли фильтровать объекты продукта по свойствам? Я пытаюсь использовать нетерпеливую загрузку следующим образом:
$products = Product::with(['properties' => function($query){
$query->where('name', 'testproperty');
}])
->get();
Но при запуске этого кода Eloquent фильтрует только свойства, найденные в каждом продукте, и по-прежнему находит все продукты, даже если ни одно из свойств не соответствует моему адресу. Также красноречивый фильтрует свойства в моем продукте, в то время как я хочу показать все свои свойства.
Мой текущий результат таков:
{
id: 1,
name: "test",
properties: [
{
id: 1,
name: "testproperty",
value: "testvalue"
}
]
},
{
id: 2,
name: "test2",
properties: [
]
}
Но я ищу что-то вроде этого:
{
id: 1,
name: "test",
properties: [
{
id: 1,
name: "testproperty",
value: "testvalue"
},
{
id: 2,
name: "testproperty2",
value: "testvalue2"
}
]
}
}
Можно ли просто отфильтровать родительский класс на основе дочерних объектов (свойств) и при этом получить все свойства, связанные с продуктом?