Laravel Left Join 条件为 ON
Posted
技术标签:
【中文标题】Laravel Left Join 条件为 ON【英文标题】:Laravel Left Join with ON condition 【发布时间】:2021-09-13 09:45:50 【问题描述】:我正在将我的查询转换为 Laravel 查询生成器。
" LEFT JOIN grade_level AS f ON (a.customer_type = 1 AND (e.id IS NULL AND d.grade_level_id = f.grade_level_id) OR (e.id IS NOT NULL AND e.grade_level_id = f.grade_level_id) ) "
我在查询过程中遇到了 AND 和 OR 条件问题。
->leftJoin("grade_level", function ($join)
$join->on("transaction_db.customer_type" , "=", 1);
$join->on("enrollment.id", "=", "");
$join->on("student.grade_level_id", "=","grade_level.grade_level_id");
$join->orOn("enrollment.id", "=" "", "enrollment.grade_level_id", "=", "grade_level.grade_level_id");
)
【问题讨论】:
你到底有什么问题?你已经尝试过什么? @shaedrich 我编辑了我的问题,谢谢 【参考方案1】:如果没有其他方法,您仍然可以执行以下操作:
->leftJoin("grade_level", function ($join)
$join->on(DB::raw("(a.customer_type = 1 AND (e.id IS NULL AND d.grade_level_id = f.grade_level_id) OR (e.id IS NOT NULL AND e.grade_level_id = f.grade_level_id) )");
)
【讨论】:
嗯...无法解决我的问题,但无论如何,谢谢你的兄弟【参考方案2】:我只想分享我们在这里解决了我们的问题。
$transactions->where(function($query) use ($glid)
$query->where(DB::raw("transaction_db.customer_type"), "!=", 1)
->orWhere(function($query1) use ($glid)
$query1->where(DB::raw("transaction_db.customer_type"), 1)
->where("enrollment.grade_level_id", "=", $glid);
);
);
【讨论】:
以上是关于Laravel Left Join 条件为 ON的主要内容,如果未能解决你的问题,请参考以下文章
SQL——左连接(Left join)右连接(Right join)内连接(Inner join)