Как к жадной загрузке добавить параметры в laravel?
Всем привет.
У меня есть жадная загрузка в запросе with(['filter_value'
Как сюда принудительно добавить массив с параметрами, например нужно включить в filter_value с id = [111,222,333].
Т.е я сначала отсеил параметры где нет товаров, чтобы пользователю их не показывали (т.к таких товаров нет с такими параметрами), а теперь нужно добавить принудительно эти параметры с id = 111, id = 222, id = 333
$filter = Filter::where('on_off', 1)
->whereHas('category_filter', function ($query) use ($category_one) {
$query->where('category_id', $category_one->id);
})
->whereHas('product_filter', function ($query) use ($product) {
$query->whereIn('product_id', $product->pluck('id'));
})
->with(['filter_value' => function ($query) use ($product) { // жадная загрузка 'filter_value'
$query->whereHas('product_filter', function ($query) use ($product) {
$query->where('product_id', $product->pluck('id'));
});
//$query->where('id', 116);
}])
->get()
->sortBy('id');
Ответы (1 шт):
Можно воспользоваться оператором IN:
$query->whereHas('product_filter', function ($query) use ($product) {
$query->where('product_id', $product->pluck('id'));
})->whereIn('id', [111, 222, 333]);
Если айдишники нужно получиться извне, то используем тот же use, чтобы пробросить данные.
Вроде ничего сложного. Я ответил на вопрос? Соотвественно IN можно использовать на любом уровне, если необходимо. Для того, чтобы посмотреть на то, какой запрос формирует Eloquent, можно использовать ->toSql();. Мне это помогает лучше понимать свои действия.