【发布时间】:2018-03-15 12:00:52
【问题描述】:
我的查询数据库原始 laravel 是这样的:
public function getTopProduct($price = null) {
$products = DB::select(DB::raw('SELECT *
FROM (
SELECT a.*, b.name AS store_name, b.address
FROM products a
JOIN stores b ON b.id = a.store_id
WHERE a.status = 1
) AS product
GROUP BY store_id')
);
return $products;
}
我要加条件
如果价格不为空,则会在where上添加条件价格
比如price = 1000,那么在where上查询如下:
WHERE a.status = 1 AND a.price < 1000
如果 price = null,则条件 AND a.price < 1000 未执行
我该怎么做?
更新
我稍微改变了我的代码流程
我尝试这样:
public function getTopProduct($price)
{
if($price == 1)
$price_condition = 'WHERE price > 1000';
else if($price == 2)
$price_condition = 'WHERE price >= 500 AND a.price <= 1000';
else if($price == 3)
$price_condition = 'WHERE price < 500';
else
$price_condition = '';
$products = DB::select('SELECT *
FROM (
SELECT a.*, b.name AS store_name, b.address
FROM products a
JOIN stores b ON b.id = a.store_id
WHERE a.status = 1
) AS product
GROUP BY store_id
'.$price_condition
);
return $products;
}
它有效
你觉得怎么样?
我的解决方案是否正确?或者您有更好的解决方案?
【问题讨论】:
-
以
$price=array_column($request->get('price'));取一个变量并以where条件进行->when查询!它在请求价格时执行!
标签: mysql laravel laravel-5 laravel-5.3 laravel-eloquent