Lumen 的 And Where 和 Where 条件如何处理?

Posted

技术标签:

【中文标题】Lumen 的 And Where 和 Where 条件如何处理?【英文标题】:How to handle And Where and Or Where conditions in Lumen? 【发布时间】:2015-12-20 05:58:30 【问题描述】:

我有这个问题:

SELECT * FROM users 
WHERE 
gender = "$gender" AND country = "$country" 
AND ((city = "$city" AND status = "1") 
OR (status IN(2,3)))";

如何在 Lumen 中编写上述查询?

到目前为止我尝试过的是:

$users = User::where('country', '=', $country)
             ->where('gender', '=', $gender)
             ->where(function ($users) 
                    $users->where('city', '=', '$city')
                          ->where('status', '=', "1");
             )
             ->whereIn('status', [2, 3])
             ->first();

但是这个查询没有返回预期的结果。

知道我的查询有什么问题吗?

【问题讨论】:

【参考方案1】:

试试下面的代码。

$users = User::where('country', '=', $country)
    ->where('gender', '=', $gender)
    ->where(function ($query) use ($city) 
        $query->where(function($query) use ($city) 
            $query->where('city', '=', '$city')
                  ->where('status', '=', "1");
        )->orWhereIn('status', [2, 3]);
    )->first();

【讨论】:

以上是关于Lumen 的 And Where 和 Where 条件如何处理?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 雄辩的 SQL 查询与 OR 和 AND 与 where 子句

Laravel Eloquent Query 使用 WHERE 和 OR AND OR?

Laravel Eloquent Query 使用 WHERE 和 OR AND OR?

mysql where语句中 or 和 and连用注意点

ThinkPHP 中 where条件 or,and 同时使用

带有 WHERE、AND 和 OR 的 SQL 选择语句