代码之家  ›  专栏  ›  技术社区  ›  S M Abrar Jahin

LAravel查询生成器-有点不同的Where Query

  •  1
  • S M Abrar Jahin  · 技术社区  · 9 年前

    我有一个 项目 像这样的桌子-

    asdf

    我想选择公司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;
    

    但它不起作用。

    有人能帮忙吗?

    2 回复  |  直到 9 年前
        1
  •  2
  •   cre8    9 年前
     DB::table('project')
        ->where('is_archived', 0)
        ->whereIn('companyID', [0, 2])
        ->get();
    

    这应该有效:)

        2
  •  1
  •   Josh    9 年前

    除了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) {}) 在那里您可以更改 $boolean 封装的参数 where() 语句设置为“or”(这可以允许更复杂的语句)

    参见Laravel 5.1文档 Parameter Grouping