У меня есть этот запрос, потому что я хочу показать на странице управления конференцией некоторую информацию в таблице о последних 3 регистрациях в конкретной конференции (имя пользователя, который сделал регистрацию, количество выбранных типов регистрации и значение общей цены выбранных типов регистрации):
<table>
<thead>
<tr>
<th scope="col">User that did the registration</th>
<th scope="col">Quantity</th>
<th scope="col">Value</th>
</tr>
</thead>
<tbody>
@foreach($registrations as $registration)
<tr>
<td>{{ $registration->userName}}</td>
<td>{{$registration->participants_count}}</td>
<td>{{number_format($registration->totalPrice, 2)}}$</td>
</tr>
@endforeach
</tbody>
</table>
Таким образом, существует метод manage()
, который получает некоторые данные и перенаправляет пользователя на страницу управления конференцией со следующими данными:
public function manage($id) // $id is the id of the conference
...
$registrations = DB::table('registrations')
->join('participants', 'registrations.id', '=', 'participants.registration_id')
->join('users', 'users.id', '=', 'registrations.main_participant_id')
->join('registration_types', 'registration_types.id', '=', 'participants.registration_type_id')
->select(DB::raw('count(participants.registration_id) as participants_count, sum(registration_types.price) as totalPrice, users.name as userName,
registrations.created_at'))
->where('conferences.id',$conference->id)
->groupBy('registrations.id')->orderBy('created_at', 'desc')->get();
dd($registrations)
....
return view('conferences.manage')
->with('conference', $conference)
->with('registrations', $registrations)
->with(...);
}
Но он не работает должным образом. При обращении к странице управления конференцией отображается:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'conferences.id' in
'where clause' (SQL: select count(participants.registration_id) as participants_count,
sum(registration_types.price) as totalPrice,
users.name as userName, registrations.created_at from `registrations`
inner join `participants` on `registrations`.`id` = `participants`.`registration_id`
inner join `users` on `users`.`id` = `registrations`.`main_participant_id`
inner join `registration_types` on `registration_types`.`id` = `participants`.`registration_type_id`
where `conferences`.`id` = 1
group by `registrations`.`id`
order by `created_at` desc)
Структура таблиц:
Conferences: id, name, user_id, ...
Registrations: id, conference_id, user_that_did_registration
Registration_types: id, name, conference_id, price, ...
Participants: id, name, surname, registration_type_id