如何在 sql 中添加条件 where 子句
how to add conditional where clause in sql
寻找改进的答案
在 Laravel 中,我使用的是原始查询。我的问题是如何根据变量值
添加 where 子句
即如果 $cid
存在,那么查询应该是
select * from user where aid=2 and cid=1;
如果不存在
select * from user where aid=2;
理想情况下,我可以这样做
if($cid) {
$query = DB::select("select * from user where aid=2 and cid=1");
} else {
$query = DB::select("select * from user where aid=2");
}
如果没有上面的方法,还有什么方法可以做到吗?
请把你的问题结合具体情况,我们不知道你说的是什么情况,也不知道你问的问题是什么意思。
通常上面的注释就足够了,但有必要指定
以下是文档中的一些示例
$users = DB::table('users')
->where('votes', '=', 100)
->where('age', '>', 35)
->get();
$users = DB::table('users')->where('votes', 100)->get();
您还可以将条件数组传递给 where 函数。数组的每个元素都应该是包含通常传递给 where 方法的三个参数的数组:
$users = DB::table('users')->where([
['status', '=', '1'],
['subscribed', '<>', '1'],
])->get();
我鼓励你阅读关于这个主题非常清楚的文档,如果有误解,请回来找我
here
这可以通过 conditional clauses 来实现。
$users = DB::table('users')
->where('aid', 2)
->when($cid, function ($query) {
$query->where('cid', 1);
})
->get();
寻找改进的答案
在 Laravel 中,我使用的是原始查询。我的问题是如何根据变量值
添加 where 子句即如果 $cid
存在,那么查询应该是
select * from user where aid=2 and cid=1;
如果不存在
select * from user where aid=2;
理想情况下,我可以这样做
if($cid) {
$query = DB::select("select * from user where aid=2 and cid=1");
} else {
$query = DB::select("select * from user where aid=2");
}
如果没有上面的方法,还有什么方法可以做到吗?
请把你的问题结合具体情况,我们不知道你说的是什么情况,也不知道你问的问题是什么意思。
通常上面的注释就足够了,但有必要指定
以下是文档中的一些示例
$users = DB::table('users')
->where('votes', '=', 100)
->where('age', '>', 35)
->get();
$users = DB::table('users')->where('votes', 100)->get();
您还可以将条件数组传递给 where 函数。数组的每个元素都应该是包含通常传递给 where 方法的三个参数的数组:
$users = DB::table('users')->where([
['status', '=', '1'],
['subscribed', '<>', '1'],
])->get();
我鼓励你阅读关于这个主题非常清楚的文档,如果有误解,请回来找我 here
这可以通过 conditional clauses 来实现。
$users = DB::table('users')
->where('aid', 2)
->when($cid, function ($query) {
$query->where('cid', 1);
})
->get();