Ниже приведен мой json для подробного описания продукта с его функциями.
{
"id": 1,
"title": "Moto g4 plus",
"description": "3 GB RAM | 32 GB ROM | Expandable Upto 128 GB\r\n5.5 inch Display\r\n16MP Rear Camera | 5MP Front Camera\r\n3000 mAh Battery",
"price": "14999.00",
"featured_image": "featured_image/qzHWpQeSfKjZ6DOS59ROyYboJ1GCvVi6NNVfLtVV.jpeg",
"category_id": 1,
"brand_id": 4,
"created_at": "2017-07-13 14:59:53",
"updated_at": "2017-07-13 15:07:49",
"deleted_at": null,
"features": [
{
"id": 3,
"name": "RAM",
"parent_id": 1,
"created_at": "2017-07-02 17:42:36",
"updated_at": "2017-07-02 17:42:36",
"default_value": "",
"pivot": {
"product_id": 1,
"feature_id": 3,
"value": "3"
}
},
{
"id": 10,
"name": "Expandable memory",
"parent_id": 1,
"created_at": "2017-07-05 15:43:29",
"updated_at": "2017-07-05 15:43:29",
"default_value": "",
"pivot": {
"product_id": 1,
"feature_id": 10,
"value": "32"
}
},
}
теперь я хочу фильтровать поиск по функциям, например, хочу телефон с ОЗУ 4 ГБ и расширяемой памятью 64 ГБ. и я хочу получить результат в соответствии со всем фильтром и дать мне точный результат в соответствии с раскрывающимся списком. На скриншоте ниже показано, как пользователь выбирает функции.
Ниже приведена моя таблица базы данных для продукта и сводка для функции продукта < img src = "https://i.stack.imgur.com/8rmkN.png" alt = "product_feature"> Как и в таблице выше, как я хранил свой продукт и его характеристики с указанием ценности продукта.
Ниже мой код модели
public function features()
{
return $this->belongsToMany('App\Feature')->withPivot('value');
}
Contoller.php
function searchedFeatures(Request $request)
{
return $products = Product::with(['features' => function($q){
$q->where('name','=','ram');
$q->where('name','=','operating system');
}])->get();
}
Это даст мне результирующий пустой массив функций, и я хочу проверить имя функции и ее значение, например, продукт имеет оперативную память 4 ГБ или продукт имеет расширяемую память 32 ГБ и т.д., и в результате получится массив всех совпадающих продуктов.
whereHas
вместоwith
. Некоторое время назад я тоже попал в эту ловушку. - person Alex   schedule 10.08.2017