Допустим, у меня есть модель Event, в которой больше участников различных моделей (Player, Coach, Admin) через полиморфное отношение и сводная таблица (EventParticipant), которая также содержит логический столбец participate
.Я хочу, чтобы участники проходили через $ event-> members, который извлекает коллекцию игроков, тренеров и администраторов посредством полиморфных отношений.
У меня есть нечто подобное, созданное со стандартными неполиморфными отношениями в тренировках, например:
class Training extends Model
{
/**
* Training has more players.
*/
public function players() {
return $this->belongsToMany('App\Player', 'training_player')
->using('App\TrainingPlayer')
->withPivot('participate');
}
}
class TrainingPlayer extends Pivot
{
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'participate' => 'boolean'
];
}
Как это можно изменить в случае событий, где участники () могут быть моделью игрока, тренера или администратора? (Может быть, что-то с классом MorphPivot, но я могуне представляете, как.)
(вместо player_id
(в классе TrainingPlayer), который ссылается на id
модели Player, есть два столбца role
и rollable_id
(в классе EventParticipant)что относится к id
модели Player, Coach или Admin соответственно)
class Event extends Model
{
/**
* Event has more participants (players, coaches, or admins).
*/
public function participants() {
//
}
}
class EventParticipant extends MorphPivot
{
//
}
Любая помощь будет признательна.:) Thx