Добрый вечер! Обьясните пожалуйста, как мне себя вести с отношениями many to many. Допустим я хочу сделать фильтр, по продуктам. Для этого у меня есть 3 таблицы:
products: id, title,price,category,brand
attributes: id, title
products_attributes: id, product_id, attribute_id, value
Допустим я пишу ModelProduct::where('category', 3)->get();
Я получу все записи с category=3, но если мне нужно, скажем получить все записи где category=3 и где значение таблицы products_attributes:value=1
Если я напишу ModelProduct::where('category', 3)->attrs()->wherePivot('value', 1)->get();
Я получу ошибку, потому что билдер ModelProduct не знает ничего об отношении attrs. Но если определю отношение следующим образом
public function attrs($q)
{
return $this->belongsToMany('\App\Models\ModelAttributes','products_attributes','product_id','attribute_id')->withPivot('value')->WherePivot('value',$q);
}
И буду использовать метод with, я все равно не смогу передать аргумент в attrs
ModelProduct::where('category', 3)->with('attrs'); (Ведь я не имею возможности передать аргумент, верно?)
Вообщем, прошу помощи, как построить сложный запрос с отношением многие к многим, так, чтобы я мог отфильтровать продукты по значениям, самой таблицы с продуктами, либо только по значениям связанной с подуктами таблицей, products_attributes либо attributes?
Благодарен за помощь!