【问题标题】:Laravel 5 query builder, complicated join (condition AND (condition OR condition))Laravel 5 查询生成器,复杂连接(条件 AND(条件 OR 条件))
【发布时间】:2018-05-02 22:33:57
【问题描述】:

我需要在 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");
})

但我需要在on 声明中包含condition AND (condition OR condition)。如果不执行DB::raw() 或同等操作,这可能吗?

【问题讨论】:

  • 看这里laravel.com/docs/5.6/queriesAdvanced Join Clauses
  • 在文档中没有找到我的具体案例(我已经阅读过)。我得到了一个已经有效的答案。感谢您的宝贵时间

标签: php laravel laravel-5 eloquent laravel-query-builder


【解决方案1】:

使用这个:

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

【讨论】:

猜你喜欢
  • 2016-12-29
  • 2021-09-07
  • 1970-01-01
  • 2012-12-03
  • 1970-01-01
  • 2022-10-20
  • 1970-01-01
  • 1970-01-01
  • 2014-06-22
相关资源
最近更新 更多