Busca usando o With() para um terceiro nível

[Finalizado Pelo Aluno]

Kelvis Antonio Rodrigues Borges Criador 09/05/2018
Kelvis Antonio Rodrigues  Borges

Gostaria de saber como faço pra usar o WITH na terceira camada.

No caso do segundo nível, por exemplo:

$countries = Country::where('name', 'LIKE', "%{$keySearch}%")->with('states')->get()

No exemplo acima ele vai buscar os "States" de acordo com o With('states') determinado na consulta dos Country. Mas quero fazer a busca juntamente com os relationships das "Cities" também, não só dos "States"

 

Manager Carlos Ferreira 09/05/2018
Carlos Ferreira

Olá, Kelvis!
Tudo bem?

Agora vai uma dica que vai te surpreender ainda mais com o Laravel.
Para uma consulta nesse formato o Laravel dispõe de recursos, nem precisa montar uma query SQL com join.

Basta incluir no método with() a próximo nível da relação.
Ex: ->with('states.cities')

$countries = Country::where('name', 'LIKE', "%{$keySearch}%")->with('states.cities')->get();

Neste caso, traz a relação entre country e states, e já traz as cities vinculadas a cada estado.

Pra acessar pode fazer assim:
#view
@foreach ($countries as $country)
    País: {{ $country->name }}
    @foreach ($country->states as $state)
        Estado do país {{ $country->name }}: {{ $state->name }}
        @foreach ($state->cities as $city)
            Cidade do estado {{ $state->name }}: {{ $city->name }}
        @endforeach
    @endforeach
    <hr>
@endforeach

Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!