如何在 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();