Как исключить пустые записи при использовании Image :: where ('category_id', $ imageCategoryId)? - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь получить все изображения, у которых category_id равен $ imageCategoryId, однако, поскольку наличие категории не является обязательным, изображение может иметь категорию NULL.

Мой код принимает категорию текущегоизображение и возвращает все изображения с той же категорией, однако, если категория изображения равна NULL, он возвращает все другие изображения с категорией NULL вместо изображений.

Вот почему я пытаюсь исключитьNULL записей из моего поиска.

$image = Image::find($id);
$imageCategoryId = $image->category_id;
$similarImages = Image::where('category_id', $imageCategoryId)->orderBy('created_at', 'desc')->limit(9)->get();

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

Использование whereRaw метод:

Для этого можно использовать whereRaw.

Пример :

$similarImages = Image::whereRaw("category_id = '$imageCategoryId' AND category_id != '' ")->orderBy('created_at', 'desc')->limit(9)->get();

Использованиеwhere метод несколько раз:

Или вы также можете использовать метод where несколько раз, и он будет действовать, как оператор AND, как в примере ниже:

$similarImages = Image::where("category_id","=",$imageCategoryId)->where("category_id","!=",'')->orderBy('created_at', 'desc')->limit(9)->get();

Для получения дополнительной информации посетите документацию Laravel 5.7 WHERE CLAUSE

0 голосов
/ 25 октября 2018

Вы можете использовать whereNotNull

$similarImages = Image::where('category_id', $imageCategoryId)->whereNotNull('category_id')->orderBy('created_at', 'desc')->limit(9)->get();
0 голосов
/ 24 октября 2018

Вы можете сделать это:

$similarImages = $imageCategoryId ? Image::where('category_id', $imageCategoryId)->orderBy('created_at', 'desc')->limit(9)->get() : [];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...