I am new to laravel and still a little bit confused about relations.
I have two models: Tournament and Season with many to many relations.
Schema::table('tournaments', function(Blueprint $table)
{
$table->increments('id')->unsigned();
$table->string('name')->unique();
});
Schema::table('seasons', function(Blueprint $table)
{
$table->increments('id')->unsigned();
$table->string('name')->unique();
});
and the pivot table
Schema::table('season_tournament', function(Blueprint $table)
{
$table->integer('season_id')->unsigned();
$table->integer('tournament_id')->unsigned();
$table->primary(['season_id','tournament_id']);
});
And relations described in Models like
//Tournament model
public function seasons()
{
return $this->belongsToMany('App\Season');
}
//Season model
public function tournaments()
{
return $this->belongsToMany('App\Tournament');
}
And everything works perfect until I need to add a new model - Event, with next relations: Any tournament in any season can have separate events. So each season_tournament record can have many events, and each event should belongs to exact season_tournament record. So when I run the next code:
Tournament::first()->seasons()->latest()->first()->events;
I should not get all events from the whole season, but from pair tournament_season.
So basically it looks like I need extended pivot with 3 columns like:
Schema::table('event_season_tournament', function(Blueprint $table)
{
$table->integer('event_id')->unsigned();
$table->integer('season_id')->unsigned();
$table->integer('tournament_id')->unsigned();
$table->primary(['event_id','season_id','tournament_id']);
});
Is there any built-in methods to manage such things? Or maybe there are more simple solutions?