【问题标题】:Laravel Left Join with ON conditionLaravel Left Join 条件为 ON
【发布时间】: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 我编辑了我的问题,谢谢

标签: php sql laravel laravel-query-builder


【解决方案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);
         });
});

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2022-10-17
    • 2015-05-17
    • 2022-08-18
    • 2012-08-22
    • 2014-07-30
    相关资源
    最近更新 更多