我有1对多的关系。预订的组织。在预订表上,外键organization_id。组织表外键user_id。用户表中我有列名| company_account | phone_no ..
id|user_id|....
$bookings = DB::table('bookings')
->select([
'organization_id',
DB::raw('CAST(created_at AS DATE) as day'),
DB::raw("SUM(CASE WHEN payment_gateway = 'LocalBook' THEN 1 ELSE 0 END) AS bookings_localbook_per_day"),
DB::raw("SUM(CASE WHEN payment_gateway = 'LocalBook' THEN commision_i_get ELSE 0 END) AS commision_localbook_per_day"),
DB::raw("SUM(CASE WHEN payment_gateway = 'selfBook' THEN 1 ELSE 0 END) AS bookings_selfbook_per_day"),
DB::raw("SUM(CASE WHEN payment_gateway = 'selfBook' THEN commision_i_get ELSE 0 END) AS commision_selfbook_per_day"),
DB::raw("SUM(CASE WHEN payment_gateway = 'paypal' THEN 1 ELSE 0 END) AS bookings_international_per_day"),
DB::raw("SUM(CASE WHEN payment_gateway = 'paypal' THEN commision_i_get ELSE 0 END) AS commision_international_per_day"),
DB::raw('SUM(commision_i_get) AS total_comission_per_day'),
])
->where('pay', '>', 0)
->groupBy(['organization_id', DB::raw('CAST(created_at AS DATE)')])
->get()
->toArray();
内部对象而不是organization_id,我需要oranization.user.name,organization.user.account ...,使用关系?我该如何实现
答案 0 :(得分:1)
您可以尝试加入这3个表 试试
DB::table('bookings')
->join('organizations','organizations.id','=','bookings.organization_id')
->join('user','user.id','=','organizations.user_id')
->select([
'user.account',
'user.name',
....])
好的做法是,您应该将表名放在每一列之前,例如user.name而不是name。 希望对您有帮助!