(Laravel) Полиморфное отношение через сводную таблицу - PullRequest
0 голосов
/ 30 сентября 2018

Допустим, у меня есть модель 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

...