[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
ANDRE CORREIA DOS SANTOS
Criador ANDRE CORREIA DOS SANTOS 25/10/2021

Tenho duas tabelas relacionadas

MODEL USER

public function certificate()

{

  return $this->hasMany(Certificados::class, 'user_id', 'id');

}

MODEL CERTIFICADOS

public function student()

{

  return $this->belongsTo(User::class, 'user_id', 'id');

}

Assim consigo exibir os dados o Usuario no grid de certficados

<div class="px-6 py-2 text-xs text-gray-500">

   {{ $cert->student()->first()->name }}

</div>

Minha duvida é: Como faço para filtrar pelo nome do Usuario, sendo que o que tenho no bando é o ID como chave estrangeira?

Manager Carlos Ferreira 25/10/2021

Olá, Andre!
Tudo bem?

A forma como fez você faz uma consulta a mais no banco (se estiver fazendo isso dentro de um loop é + uma para cada loop):
{{ $cert->student()->first()->name }}

Se explorar bem o eloquent, você consegue trazer isso com o método:
$certificates = Certificate::with('student')->get();

# no loop na view
{{ $cert->student->name }}

------

Uma das formas mais simples seria fazendo um join:
$filter = 'Carlos';
Certificate::join('users', 'users.id', 'certificates.user_id')
                ->select('users.name as user_name', 'certificates.coluna_x')
                ->where('users.name', 'LIKE', "%${$filter}%")
                ->get();

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

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!