Filtro com tabelas relacionadaspi
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?
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();
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!