在一个orWhere函数中将Laravel中带有OR的多个where子句分组

时间:2017-06-26 08:31:42

标签: php laravel orm eloquent

我想从数据库中选择:SELECT * FROM database WHERE id=1 OR id=2 OR id=5;

我不知道用户要求的where子句的数量,它可以是1,也可以是10。

我尝试使用Model::orWhere([['id','=',1],['id','=',2],['id','=',5]])但它似乎返回一个空列表。

Laravel文档中,有WHERE子句的示例:

users = DB::table('users')->where([
    ['status', '=', '1'],
    ['subscribed', '<>', '1'],
])->get();

尽管WHERE子句在示例中起作用,但orWhere子句似乎并不像这样工作。

2 个答案:

答案 0 :(得分:2)

使用类似:

User::whereIn('id', [1, 2, 3])->get();

作为第二个参数,您需要使用数组。

答案 1 :(得分:2)

根据我的评论,我们可以通过IN Clause解决这个问题。

$model = Model::whereIn('id', array(1, 2, 3))->get();

参考How to Make Laravel IN clause