代码之家  ›  专栏  ›  技术社区  ›  Latheesan

我怎样才能在正确的查询生成器中正确查询

  •  3
  • Latheesan  · 技术社区  · 5 年前

    查看以下查询:

        $testQuery = Customer::where('company_id', auth()->user()->company_id);
    
        $testQuery
            ->where('name', 'like', '%test%')
            ->orWhere('age', '>', 22);
    
        dd($testQuery->toSql());
    

    这将生成以下SQL查询:

    从中选择* customers 何处( company_id =?和 name 喜欢吗?或 age &?和 客户 deleted_at 是空的

    我追求的是这样的东西:

    从中选择* 客户 哪里 公司会员 =?和( 名称 喜欢吗?或 年龄 &?和 客户 . 删除删除 是空的

    我怎样才能做到这一点呢?即第一个where条件 company_id = ? 比其他过滤器更重要 名称 年龄 ?

    现在,根据查询生成器如何构造查询,我看到的结果来自其他公司,而不是我在查询中指定的公司。

    1 回复  |  直到 5 年前
        1
  •  4
  •   Patrick.SE    5 年前

    我相信你想用 parameter grouping .

    通过使用闭包,您可以告诉查询生成器在括号中应该包含什么内容:

    $testQuery = Customer::where('company_id', auth()->user()->company_id)
                         ->where(
                             function ($query) {
                               $query->where('name', 'like', '%test%')
                                     ->orWhere('age', '>', 22);
                          })->get();