@vlad_lutsky

Как правильно сформировать запрос к ДБ в laravel?

Есть три таблицы - пользователи, изображения, группы пользователей. Суть запроса выбрать все данные пользователей из 1 группы пользователей и присоеденить к ним все прикрепленные изображения:

<?php 
Route::get('/get/database/girls', function () {
  $users = DB::table('users')
    ->join('users_groups', function ($join_groups) {
        $join_groups->on('users.id', '=', 'users_groups.user_id');
    })
    ->join('system_files', function ($join_images) {
        $join_images->on('users.id', '=', 'system_files.attachment_id');
    })
    ->where('users_groups.user_group_id', '=', 1)
    ->get();
  return json_encode($users);
});


запросы выводит несколько объектов
Пользователь 1 - имя 1 - изображение 1
Пользователь 1 - имя 1 - изображение 2
Пользователь 2 - имя 1 - изображение 1

в таблице system_files есть поле field которое принимает значения от photo1, photo2, photo3, photo4, photo5, photo6 (предпологаемо нужно группировать по нему)
Как бы мне сгруппировать первые два объекта чтобы было:
Пользователь 1 - имя 1 - изображение 1 - изображение 2
Пользователь 2 - имя 1 - изображение 1
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
@nozzy
Symfony, Laravel, SQL
$users = DB::select(
"select
t1.id,
t1.user_name,
GROUP_CONCAT( t3.field SEPARATOR ',') as images
from users t1
join users_groups t2 on t2.user_id = t1.id
join system_files t3 on t3.user_id = t1.id
where t2.user_group_id = 1
group by t1.id, t1.user_name");
return json_encode($users);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@miki131
$gid = 1;
User::query()
->whereHas('groups', function($q) use ($gid) {
    $q->where('id', $gid);
})
->with('files')
->get();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы