Я хочу иметь таблицу в представлении, которая показывает все типы регистрации, связанные с конференцией, цену каждой и количество проданных регистраций каждого типа регистрации.
Например, если конференция с идентификатором «1» имеет два типа регистрации с этими столбцами и значениями:
- rtype1 (имя), 0,00 $ (цена), 20 (емкость)
- rtype2 (имя), 5,00 $ (цена), 10 (емкость)
И в rtype1 зарегистрировано 20 участников, а в rtype 2 - 5. Я хочу показать таблицу вроде:
Registration Type name Price Sold/capacity
rtype1 0.00$ 20/20
rtype2 5.00$ 5/10
Я не понимаю, как этого добиться. На данный момент у меня есть этот запрос, чтобы получить каждый тип регистрации и количество каждого типа регистрации:
$participantsOfEachType = Participant::
select(DB::raw('registration_type_id, count(registration_type_id)'))
->groupBy('registration_type_id')->get();
Этот запрос возвращает результаты ниже. Но не рассматривает конкретную конференцию. Знаете ли вы, что необходимо учитывать для конкретного идентификатора конференции, чтобы можно было показать результаты в виде таблицы, как в приведенном выше примере таблицы?
Collection {#271 ▼
#items: array:2 [▼
0 => Participant {#282 ▼
...
#attributes: array:2 [▼
"registration_type_id" => 1
"count(registration_type_id)" => 2
]
...
}
1 => Participant {#279 ▼
...
#attributes: array:2 [▼
"registration_type_id" => 2
"count(registration_type_id)" => 2
]
...
}
]
}
Соответствующие модели на вопрос:
Модель пользователя:
public function registrations(){
return $this->hasMany('App\Registration','user_that_did_registration');
}
Регистрационная модель:
// user that did the registration
public function customer(){
return $this->belongsTo(User::class, 'user_that_did_registration', 'id');
}
public function participants(){
return $this->hasMany('App\Participant');
}
public function conference(){
return $this->belongsTo('App\Conference');
}
Модель конференции:
public function registrations(){
return $this->hasMany('App\Registration', 'conference_id');
}
Режим участников:
public function registration(){
return $this->belongsTo('App\Registration');
}
public function registration_type(){
return $this->belongsTo('App\RegistrationType');
}