闭包
这种方式将 or 部分写成 closure 传入 where()
,与 Eloquent 风格一致,可读性较好。代码如下:
if (!empty($keyword)) {
$goodsModel = $goodsModel->where(function ($query) use ($keyword) {
$query->where('name', 'like', "%{$keyword}%")->orWhere('barcode', 'like', "%{$keyword}%");
});
}
原生
实在想不出怎么写,就写原生 SQL 好了。这也是最后一种保险但不提倡的做法了吧,代码如下:
if (!empty($keyword)) {
$keyword = "%{$keyword}%";
$goodsModel = $goodsModel->whereRaw('(name like ? or barcode like ?)', [$keyword, $keyword]);
}
转自https://laravel-china.org/articles/6044/laravel-series-orwhere-conditional