使用Image :: where('category_id',$ imageCategoryId)时如何排除空记录?

时间:2018-10-24 20:05:16

标签: php laravel eloquent

我正在尝试获取具有$ imageCategoryId的category_id的所有图像,但是,由于并非必须具有类别,因此图像的类别可能为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 :(得分:1)

使用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 Documentation

答案 1 :(得分:0)

您可以这样做:

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

答案 2 :(得分:0)

您可以使用whereNotNull

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