Отношения использования построителя запросов БД - PullRequest
0 голосов
/ 18 марта 2020

У меня есть 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 ... используя отношения ?? Как я могу достичь этого

1 Ответ

1 голос
/ 18 марта 2020

Вы можете попробовать объединить эти 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. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...