我正在尝试获取具有$ 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();
答案 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();