【问题标题】:Grouping multiple where clauses with OR in Laravel on one single orWhere function在一个 orWhere 函数上将 Laravel 中的多个 where 子句与 OR 分组
【发布时间】:2017-11-29 01:22:45
【问题描述】:

我想从数据库中选择类似: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 子句似乎并不像这样工作。

【问题讨论】:

  • 你可以使用 and IN 子句stackoverflow.com/questions/29115385/…
  • SELECT * FROM database WHERE id=1 OR id=2 OR id=5; 适合你吗?
  • @MayankPandeyz 是的,我在应该返回的东西上测试了条款。
  • 如果您的问题已经解决,请关闭问题

标签: php laravel orm eloquent


【解决方案1】:

根据我的评论,您可以使用 IN 子句来解决这个问题。

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

参考How to Make Laravel IN clause

【讨论】:

    【解决方案2】:

    使用类似的东西:

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

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

    【讨论】:

      猜你喜欢
      • 2020-08-03
      • 2023-03-06
      • 2019-06-15
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 2014-11-20
      • 2020-11-28
      • 1970-01-01
      相关资源
      最近更新 更多