【问题标题】:Subquery of two related tables in laravellaravel中两个相关表的子查询
【发布时间】:2021-11-19 14:50:35
【问题描述】:

我想在 Laravel 5 中编写以下查询。

SELECT *
FROM loans
WHERE loanAmount > (SELECT IFNULL(SUM(paidLoanAmount), 0)
                    FROM paid_loans WHERE loanId = loans.id);

我尝试了以下方法,但 PaidLoan 的子查询似乎无法正常工作,因为 loan.id 或其他我没有注意到的东西。

Loan::where(
    'loanAmount', 
    '<=', 
    PaidLoan::where('paid_loans.loanId', 'loans.id')
        ->get()
        ->sum('paidLoanAmount')
)->get();

【问题讨论】:

  • 你是否开始使用 Laravel 的 Eloquent 模型创建 Loan 模型? laravel.com/docs/5.8/eloquent
  • 这个我试过了
  • Loan::where('loanAmount', 'get()->sum('paidLoanAmount '))->get();

标签: php mysql sql laravel


【解决方案1】:

您可以在贷款上使用 leftJoin 并添加一个正常条件。

$payedLoans = Loan::leftJoin('paid_loans', 'paid_loans.loanId', '=', 'loans.id')
    ->where('loanAmount', '<=', \DB::raw("IFNULL(sum('paid_loans.paidLoanAmount'), 0)"))
    ->groupBy('loans.id')
    ->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    相关资源
    最近更新 更多