Laravel和查询使用join和distinct

Eli*_*Eli 5 sql join laravel eloquent

我有2个表要使用查询join,即loansamortizations表。

Loans表中有许多摊销,所以loans.id是一个参考amortizations.loan_idamortizations表格。

Loan id:3存在两次amortizations table,每个都有value=10,800
Loan id:5在中也存在两次amortizations table,每个都有一个value=11,100和相同的搭配Loan id:11,在amortizations table每个中也存在两次都有一个value=5400
当您加起来时,total54,600。但我希望ID可以区分,以便值不会相加两次。因此总数等于27,300。我下面的现有查询返回一个54,600值,而不是27,300甚至distinct()在Laravel中使用它。我将如何实现?

Controller query

$oneToThirtyDue = Amortization::distinct('amortizations.loan_id')
                ->join('loans', 'loans.id', '=', 'amortizations.loan_id')
                ->select('loans.loan_type',\DB::raw('SUM(loans.loan_balance) as total_val'))
                ->where('amortizations.payment_status',0)
                ->where('amortizations.schedule', '<', date('Y-m-d'))
                ->where('amortizations.past_due', '<=', 30)
                ->groupBy('loans.loan_type')
                ->orderBy('loans.loan_type')
                ->get();
Run Code Online (Sandbox Code Playgroud)

请帮忙。非常感谢。

Eli*_*Eli 3

   $idsDue = Amortization::distinct()
                           ->select('loan_id')
                           ->where('payment_status',0)
                           ->where('schedule', '<', date('Y-m-d'))
                           ->where('past_due', '<=', 30)
                           ->get();

    $oneToThirtyDue = Loan::select('loan_type',\DB::raw('SUM(loan_balance) as total_val'))
                                  ->whereIn('id',$idsDue)
                                  ->groupBy('loan_type')
                                  ->orderBy('loan_type')
                                  ->get();
Run Code Online (Sandbox Code Playgroud)