
Como atualizar multiplos registros com o método whereIn no Laravel 9 ?
O Laravel 9 é um framework PHP moderno e poderoso que oferece muitas ferramentas úteis para desenvolvedores web. Uma das... Leia mais
Desenvolvedor de Software
Quando trabalhamos com Eloquent no Laravel, frequentemente precisamos realizar consultas baseadas em relacionamentos entre modelos. Para isso, o Laravel oferece dois métodos bastante poderosos: whereHas
e with
. Neste artigo, vou explicar como utilizá-los de forma prática, para você fazer consultas mais eficientes e otimizadas no seu projeto.
whereHas
?O método whereHas
é utilizado quando você quer filtrar resultados com base em uma condição aplicada a um relacionamento. Vamos imaginar um cenário simples: você tem dois modelos, User
e Post
, onde um usuário pode ter vários posts. Agora, você precisa buscar apenas os usuários que têm posts com o status “aprovado”. O whereHas
faz exatamente isso!
Aqui vai um exemplo básico:
$usersWithApprovedPosts = User::whereHas('posts', function ($query) {
$query->where('status', 'approved');
})->get();
O que acontece aqui? Basicamente, estamos dizendo: “Ei, me traga todos os usuários que têm posts aprovados”. Assim, o Laravel vai filtrar os usuários para retornar apenas aqueles que atendem a essa condição.
with
?Enquanto o whereHas
filtra os resultados com base no relacionamento, o método with
é usado para carregar os relacionamentos de forma otimizada, evitando o problema de N+1 queries. Traduzindo para o nosso exemplo, se você quiser buscar todos os usuários e já trazer os posts de cada um, o with
entra em cena.
Olha só como isso fica simples:
$usersWithPosts = User::with('posts')->get();
Aqui, o Laravel vai trazer os usuários e os posts relacionados de uma vez só, economizando muitas consultas desnecessárias ao banco de dados.
whereHas
com with
Agora, o melhor dos dois mundos: você pode combinar o whereHas
com o with
para filtrar e carregar os relacionamentos ao mesmo tempo. No exemplo abaixo, além de filtrar os usuários que têm posts aprovados, já vamos trazer esses posts para evitar outra consulta:
$usersWithApprovedPosts = User::whereHas('posts', function ($query) {
$query->where('status', 'approved');
})->with('posts')->get();
Isso é muito útil em cenários onde você quer garantir que só os usuários com determinado tipo de post sejam retornados, e já trazer os posts relacionados de uma vez. Sem contar que essa abordagem economiza performance e deixa o código bem mais limpo.
Na prática, utilizar whereHas
e with
juntos pode reduzir bastante o número de consultas ao banco de dados, principalmente quando você lida com grandes volumes de dados e relacionamentos complexos. Além disso, essas técnicas ajudam a manter o código mais organizado, sem precisar fazer um loop manual para carregar os relacionamentos.
O Laravel facilita muito o trabalho com relacionamentos no Eloquent, e usar bem o whereHas
e with
é fundamental para consultas eficientes. Quando você precisa filtrar por um relacionamento e já carregar esses dados em uma única consulta, a combinação dessas duas ferramentas vai te salvar de muitos problemas com performance.
Se você ainda não está usando essas técnicas no seu projeto, está na hora de testar e perceber a diferença que isso pode fazer!
Este artigo é uma sintese do artigo : Laravel WhereHas() and With() e você pode acessar através do link : https://dev.to/othmane_nemli/laravel-wherehas-and-with-550o
O Laravel 9 é um framework PHP moderno e poderoso que oferece muitas ferramentas úteis para desenvolvedores web. Uma das... Leia mais
Se você já se deparou com a frustrante mensagem de erro “ssh: connect to host bitbucket.org port 22: Network is... Leia mais
Ao desenvolver aplicações modernas com PHP, uma das tarefas mais comuns é manipular arrays — filtrando, transformando ou agrupando dados.... Leia mais
Nesta semana o Postgres vem me desafiando, e meu pc também, porque por algum motivo o PGADMIN está demorando uma... Leia mais