[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Brendo Vale
Criador Brendo Vale 09/04/2018

Tenho 3 tabelas

Tabelas: Estados, Cidades, Clientes

estados 1:n cidades n:n clientes

Como eu faço p pegar cidades e clientes por estado já com o cliente em cada cidade?

 

Manager Carlos Ferreira 09/04/2018

Olá, Brendo!
Tudo bem?

Tenta ai:
public function nomeMetodo(State $state)
{
    $state = $state->where('name', 'Minas')
                        ->with(['cities.clients'])
                        ->get()
                        ->first();
    dd($state);
}
Confere em "Relations" se retorna OK, inclusive as cidades.

Neste caso, no Model State precisa ter o relacionamento cities()

E no Model City precisa ter o relacionamento clients(), que retornaos clientes ligados a cidade.

Qualquer dúvida amigo, me retorna. Tá bom? :-)

Carlos Ferreira
Criador Brendo Vale 09/04/2018

Show! Eu so tenho acesso ao especializa ti academy porque n consigo acessar os outros cursos?

Brendo Vale
Criador Brendo Vale 09/04/2018

a está dando erro no laravel do academy, quando clico em Minhas dúvidas aparece o erro http://prntscr.com/j4xq3g

Brendo Vale
Criador Brendo Vale 09/04/2018

a e Esqueci Obrigado pela Ajuda

Brendo Vale
Criador Brendo Vale 09/04/2018

Ta dando erro Call to a member function addEagerConstraints() on null

$state = $this->state->with(['cities'])->get();

dd($state);

state

public function cities()

    {

        $this->hasMany('App\Models\Api\v1\City');

    }

city

public function state()

    {

        $this->belongsTo('App\Models\Api\v1\State');

    }

 

 

 

 

 

 

 

 

Brendo Vale
Manager Carlos Ferreira 09/04/2018

Olá, Brendo!

Obrigado por avisar do BUG, vou corrigir.

---------------------------------------------

Sobre o acesso a EspecializaTi Academy, sua assinatura está ativa, e você tem acesso a todos os cursos disponíveis nessa plataforma, todos estes: https://academy.especializati.com.br/cursos

---------------------------------------------

Que bom que a questão do ordenação funcionou com sucesso.

---------------------------------------------

Como está passando a classe como uma String, sem "importar" com use, precisa passar o "\", ou deixar assim (prefiro):
public function cities()
{
    // Não esquece: use App\Models\Api\v1\City;
    // Se tiver no mesmo namespace (diretório) não precisa fazer o "use"
    // Pode fazer assim também: $this->hasMany('\App\Models\Api\v1\City');
    $this->hasMany(City::class);
}

---------------------------------------------
Aguardo o seu retorno.

Carlos Ferreira
Criador Brendo Vale 09/04/2018

$this->state->with('cities')->find($id) ele retorna a cidade vazia se eu tirar o find ele retorna normal todos e as cidades de cada estado.

 

public function cities()
{
    // Não esquece: use App\Models\Api\v1\City;
    // Se tiver no mesmo namespace (diretório) não precisa fazer o "use"
    // Pode fazer assim também: $this->hasMany('\App\Models\Api\v1\City');
    $this->hasMany(City::class);
}

n funciona pq esqueci o return 

Brendo Vale
Criador Brendo Vale 09/04/2018

depois adiciona uma funcão pra editar o comentario rs, 

 

entao como eu edito? http://prntscr.com/j65xib

 

meu codigo está assim http://prntscr.com/j65xos

Brendo Vale
Criador Brendo Vale 09/04/2018

no index ele retorna assim http://prntscr.com/j65yp4

Brendo Vale
Manager Carlos Ferreira 09/04/2018

Realmente faltou o return, parabéns por ter percebido.

Se não estiver funcionando com o find() pode que o ID informado não existe, por isso não retornou nada.

Posta o código no GitHub, fica mais fácil para mim te ajudar.

Os prints que enviou, tem algum erro?
No caso, pelo que entendi está recuperando o registro "state" 12.

Se quiser editar este registro precisa implementar a lógica de update(), mais ou menos assim: https://academy.especializati.com.br/aula/curso-laravel-53-update

public function update(Request $request, $id)
{
    $state = $this->state->find($id);

    $update = $state->update($request->all());

    [...]
}

Carlos Ferreira
Criador Brendo Vale 09/04/2018

Então ,consegui resolver masacho que essas dúvidas de lógica acabam com o tempo, com mais treino e experiência.

 

Resolvido Obrigado!

Brendo Vale
Manager Carlos Ferreira 09/04/2018

Com o tempo e prática vai pegando experiência e dúvidas de lógica serão mais facilmente resolvidas.

Continue na pegada que está.

Abs;

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!