Php 多态关系的Laravel左连接未给出完美结果
我有一对一的多态关系Php 多态关系的Laravel左连接未给出完美结果,php,laravel,left-join,Php,Laravel,Left Join,我有一对一的多态关系 customer_class_bookings id | customer_id | status | total | quantity | trader_user_id Polymorphic table (trader_job_payment) id | status | payable_id | payable_type 我的问题是 $earnings = CustomerClassBooking::where('trader_user_id', $user_i
customer_class_bookings
id | customer_id | status | total | quantity | trader_user_id
Polymorphic table (trader_job_payment)
id | status | payable_id | payable_type
我的问题是
$earnings = CustomerClassBooking::where('trader_user_id', $user_id)
->leftjoin('trader_job_payment', function ($q)
{
$q->on('trader_job_payment.payable_id', '=', 'customer_class_bookings.id');
$q->on('trader_job_payment.payable_type', '=', \DB::raw("'" . CustomerClassBooking::class . "'"));
})
->select(
\DB::raw("SUM(IF (customer_class_bookings.status = 'Completed', customer_class_bookings.quantity, 0)) AS completed"),
\DB::raw("SUM(IF (trader_job_payment.status = 'DISBURSED' , customer_class_bookings.total, 0)) AS earning"), //problem lies here
\DB::raw("SUM(IF (customer_class_bookings.status = 'Accepted-Paid' , customer_class_bookings.quantity, 0)) AS pending"),
\DB::raw("SUM(IF (customer_class_bookings.status IN ('Cancelled', 'Disputed') , customer_class_bookings.quantity, 0)) AS not_completed")
)
->first();
return $earnings;
这一切都很好,直到我们匹配trader\u job\u payment
表中的earnings
部分
\DB::raw("SUM(IF (trader_job_payment.status = 'DISBURSED' , customer_class_bookings.total, 0)) AS earning"),
如果条件在这种情况下总是返回false,则不会给出完美的结果。谁能告诉我这里有什么问题吗?没有左加入的盈利结果
$earning_bookings = CustomerClassBooking::whereHas('payment', function($query){
$query->where('status','DISBURSED');
})->where('trader_user_id',$user_id)->sum('total');
确保有一条记录确实是
trader\u job\u payment.status='dispushed'
@TsaiKoga是的,记录是存在的。如果记录不是太大,请尝试选择->select('trader\u job\u payment.status')
并调试它。@TsaiKoga我已经通过手动sql查询完成了,它给出了完美的结果。我想用laravel解决问题。你能发布原始sql查询吗