Получить данные из трех моделей с отношением laravel - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть три модели:

Ser ie ($ id)

public function saisons() 
{
    return $this->hasMany(Season::class);
}

public function episodes() 
{
    return $this->hasManyThrough(Episode::class, Season::class);
}

Сезон ($ serie_id)

public function serie()
{
    return $this->belongsTo(Serie::class);
}

public function episodes() 
{
    return $this->hasMany(Episode::class);
}

Эпизод ($ season_id)

public function season()
{
    return $this->belongsTo(Season::class);
}

public function serie()
{
    return $this->BelongsToThrough(Serie::class, Season::class);
}

Я хотел бы показать один конкретный c сезон из сериала ie с эпизодами, связанными

Мой взгляд

<h1 class="title">{{$serie->seasons->number}}</h1>


@foreach ($serie->seasons->episodes as $episode)

        <div class="row">
            <div class="columns">
                <div class="col">
       {{$episode->number}}
       <a href="{{route('episodes.show', $episode->id)}}">{{$episode->name}}</a>



        @if(isset($episode->programmation->date))

            {{$episode->programmation->date}}

        @endif
       @if (($episode->season_finale) == '0')
            Non
            @elseif (($episode->season_finale) == '1')
            Oui
            @endif

        @foreach ($episode->chaines as $chaine)
                   {{$chaine->name}}

            @endforeach
        </div>
        </div>
    </div>
    @endforeach

Маршрут

Route::get('/serie/{serie}/saison/{season}', 'Front\SaisonController@show')->name('saison.show');

Для моего URL я выбираю показ номера saison, а не id, и я думаю, что это проблема.

Как я могу сделать это надлежащим образом?

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

Хорошо, кто-нибудь, помогите мне найти правильный ответ:

     $serie = Serie::findOrFail($serie);
     $season =  Season::where('serie_id', $serie->id)->where('season.number', $season)->first();
0 голосов
/ 30 апреля 2020

Я думаю, что этот подход может помочь вам.

$serie = Serie::where('id',$id)->with('seasons'=>function($query) use ($season_id) {
            $query->where('season_id',$season_id)->with('episodes')->get();
    })->get();
...