У меня есть функция, которая включает в себя следующие строки:Laravel whereNotIn и где не работают вместе вместе
$products_to_ignore = $this->products()->get()->lists('id'); // returns [1,3,5]
$products = Product::
whereNotIn('id', $products_to_ignore)
->where('stock_level', '>', 0)
->with('producer')
->get();
return $products;
И у меня есть таблица БД по линиям ниже
id product_name stock_level
1 eggs 5
2 cheese 0
3 milk 1
4 cucumber 4
5 pie 0
Но функция выше возвращает []
Если я просто использовать
$products = Product::
where('stock_level', '>', 0)
->with('producer')
->get();
return $products;
я получу [1,3,4]
и если я использую:
$products_to_ignore = $this->products()->get()->lists('id'); // returns [1,3,5]
$products = Product::
whereNotIn('id', $products_to_ignore)
->with('producer')
->get();
return $products;
я получу [2,4]
.
Почему эти два игрока не играют вместе? Как захватить элементы с уровнем запаса больше 0, которые также не находятся в массиве [1,3,5]
? Например, первая часть кода в этом вопросе должна возвращать продукт [4]
, а не в массиве, а также с уровнем запаса> 0.
Убедитесь, что ваши данные выглядит в вашем примере, потому что код в порядке. –