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

Laravel 5查询生成器,复杂连接(条件和(条件或条件))

  •  0
  • Skeets  · 技术社区  · 6 年前

    我需要在Laravel的查询生成器中重现以下查询:

    select * from table LEFT JOIN table_b ON `condition` AND (`condition` OR `condition`)
    

    我知道你可以做复杂的事 where 这样的陈述:

    Model::where(function ($query) {
      return $query->where("field","value")->orWhere("field","value");
    })->where("field","value")->get();
    

    我知道你可以做半复杂的 on 这样的陈述:

    ->leftJoin('table', function ($join) {
      $join->on("field","=","field_b")
        ->on("field_a","=","field_c");
    })
    

    但我需要 condition AND (condition OR condition) 内部 在…上 陈述不这样做是否可行 DB::raw() 或同等产品?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Jonas Staudenmeir    6 年前

    使用此选项:

    ->leftJoin('table', function ($join) {
        $join->on("field","=","field_b")
            ->on(function($join) {
                $join->on("field_a","=","field_c")
                    ->orOn("field_d","=","field_e");
            });
    })