我查询数据库原始laravel这样的:如何在db raw 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
例如条件,涨价= 1000 ,然后在where
本查询:
WHERE a.status = 1 AND a.price < 1000
如果价格= 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;
}
和它的作品
你怎么看?
我的解决方案是否正确?或者你有更好的解决方案?
取一个变量,'$价格= array_column($请求 - >获取( '价格'));'和'做 - > when'用'where'条件查询!它在价格要求时执行! –