Сложный запрос для получения последних регистраций не работает должным образом - ошибка столбца не найдена - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть этот запрос, потому что я хочу показать на странице управления конференцией некоторую информацию в таблице о последних 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

1 Ответ

0 голосов
/ 05 сентября 2018

Похоже, вы не включили таблицу conferences в запрос. Пока вы этого не сделаете, любая ссылка на него (в данном случае, в предложении WHERE) будет препятствовать выполнению запроса и выдаст эту ошибку

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