Я хочу получить запрос с использованием laravel, который позволяет получить подробную информацию о регистрации.У меня есть этот маршрут:
Route::get('/conference/{id}/{slug?}/registration/{regID}/info', [
'uses' => 'RegistrationController@getRegistrationInfo',
'as' =>'conferences.registrationInfo'
]);
Когда пользователь получает доступ к этому маршруту, я хочу показать подробности этой конкретной регистрации пользователя.
Например, если пользователь John W. сделалрегистрация в конференции, в которой:
- выбрано 1 билет / регистрация типа «генерал» для него (Джон В.) и 1 билет / регистрация типа «плюс» (для Джейка В.)
- , а тип регистрации "general" имеет цену "0"
- , а тип регистрации "plus" имеет цену "1"
- , а all_participants имеет значение«1» в таблице конференций означает, что необходимо собрать имя и фамилию каждого участника, «0» означает, что необходимо собрать имя и фамилию только того пользователя, который выполняет регистрацию (авторизованный пользователь)
В регистрационной таблице будет вставлено:
id status conference_id main_participant_id
1 I 1 1
В таблице участников:
id registration_id registration_type_id name surname
1 1 1 John W
2 1 2 Jake W
Таблица типов регистрации имеет вид:
id name price ...
1 general 0
2 plus 1
Стол для конференций похож на:
id name date
1 conference name 2018-06-13
Я хочу иметь запрос, который позволяет показать для конкретной регистрации, когда пользователь нажимает на ссылку, связанную с указанным выше маршрутом "Route :: get ('/ conference / {id} / {slug?} / registration / {regID} / info ", показать для каждого тикета / типа регистрации, связанного с этим регистрационным идентификатором, в данном случае было 2 типа регистрации (2 участника), поэтому запрос, позволяющий отобразить список с двумяэлементы списка с информацией о регистрации, например:
<ul>
<li>
<span>show the registration ID here</span>
<span>Conference name: conference name</span>
<span>Conference date: 2018-06-13</span>
<span>Registration type: general</span>
<span> Participant: John W</span>
<span>Price: 0<span>
</li>
<li>
<span>show the registration ID here</span>
<span>Conference name: conference name</span>
<span>Conference date: 2018-06-13</span>
<span>Registration type: plus</span>
<span> Participant: Jake W</span>
<span>Price: 1<span>
</li>
<ul>
Знаете ли вы, как этого можно достичь?Я не понимаю, как это сделать правильно, если это должен быть только один запрос или несколько запросов.Знаете ли вы, как правильно выполнить запрос в этом контексте?
Соответствующие модели для вопроса:
Модель конференции:
class Conference extends Model
{
public function registrationTypes(){
return $this->hasMany('App\RegistrationType', 'conference_id');
}
public function registrations(){
return $this->hasMany('App\Registration', 'conference_id');
}
}
Тип регистрации: модель:
class RegistrationType extends Model
{
public function conference(){
return $this->belongsTo('App\Conference');
}
public function participants(){
return $this->hasMany('App\Participant');
}
public function registrations(){
return $this->belongsToMany('App\Registration', 'registration_registration_types');
}
}
Модель регистрации:
class Registration extends Model
{
public function customer(){
return $this->belongsTo(User::class, 'main_participant_id', 'id');
}
public function participants(){
return $this->hasMany('App\Participant');
}
public function registration_types(){
return $this->belongsToMany('App\RegistrationType', 'registration_registration_types');
}
public function conference(){
return $this->belongsTo('App\Conference');
}
public function payment()
{
return $this->hasOne('App\Payment');
}
}
Модель участника:
class Participant extends Model
{
public function registration(){
return $this->belongsTo('App\Registration');
}
public function registration_type(){
return $this->belongsTo('App\RegistrationType');
}
}
Модель пользователя:
class User extends Authenticatable
{
public function registrations(){
return $this->hasMany('App\Registration','main_participant_id');
}
}
Как:
public function getRegistrationInfo($regID){
$q = Registration::
with('conference', 'registration_types.participants')
->find($regID);
}
показывает:
Table 'project.registration_registration_types'
doesn't exist (SQL: select `registration_types`.*,
`registration_registration_types`.`registration_id` as
`pivot_registration_id`,
`registration_registration_types`.`registration_type_id` as
`pivot_registration_type_id` from `registration_types` inner join
`registration_registration_types` on `registration_types`.`id` =
`registration_registration_types`.`registration_type_id` where
`registration_registration_types`.`registration_id` in (1))