【问题标题】:LAravel Query Builder - A little different Where QueryLaravel 查询生成器 - 有点不同的 Where 查询
【发布时间】:2015-12-14 15:00:08
【问题描述】:

我有一个像这样的项目表-

我想选择公司 ID 为 0 和 2 的所有数据(公司 ID 可能是 1,3,3,4,5,6,...)。

所以,我在 Laravel Query Builder 中所做的是 -

 DB::table( 'project')
      ->where('project.is_archived', '=', 0)
      ->where('project.companyID', '=', 0)
      ->orwhere('project.companyID', '=', 2)
      ->get;

但它不起作用。

有人可以帮忙吗?

【问题讨论】:

    标签: mysql laravel laravel-4 laravel-5 query-builder


    【解决方案1】:
     DB::table('project')
        ->where('is_archived', 0)
        ->whereIn('companyID', [0, 2])
        ->get();
    

    这应该可行:)

    【讨论】:

      【解决方案2】:

      除了 mimo 的解决方案,您还可以使用回调或特殊的 where 方法组合语句。

      比如:

      DB::table('project')
          ->where('is_archived', 0)
          ->orWhere(function(Builder $query) {
              $query
                  ->where('companyID', 0)
                  ->where('companyID', 2)
          });
      

      将创建此语句:

      SELECT * FROM project WHERE (is_archived = 0) AND (companyID = 0 OR companyID = 2)
      

      您也可以使用简单的->where(function($query) {}) 来做到这一点,将封装的where() 语句的$boolean 参数更改为“或”(这可以允许更复杂的语句)

      查看 Parameter Grouping 的 Laravel 5.1 文档

      【讨论】:

        猜你喜欢
        • 2018-01-03
        • 1970-01-01
        • 2018-12-26
        • 1970-01-01
        • 2015-12-13
        • 1970-01-01
        • 2015-07-25
        • 2019-05-06
        • 1970-01-01
        相关资源
        最近更新 更多