Olá Guilherme, tudo bem?
No Doctrine, que é o ORM padrão usado com Symfony, as funcionalidades que você mencionou, como has
e with
, podem ser alcançadas, mas de maneira um pouco diferente.
Para replicar a funcionalidade de has
(carregar usuários que possuem pelo menos um post), você pode usar o DQL (Doctrine Query Language) para fazer uma consulta que filtre os usuários baseado na existência de posts relacionados. Aqui está um exemplo de como você poderia fazer isso:
$query = $entityManager->createQuery('SELECT u FROM User u WHERE u.posts IS NOT EMPTY');
$usersWithPosts = $query->getResult();
Este código seleciona todos os usuários que têm pelo menos um post associado.
Quanto à funcionalidade de with
para carregar os posts via EAGER LOADING, o Doctrine permite definir isso diretamente na anotação da entidade. Por exemplo, se você tem uma relação entre User
e Post
, você pode configurar o carregamento antecipado (EAGER LOADING) na definição da entidade:
/** @Entity */
class User
{
// ...
/**
* @OneToMany(targetEntity="Post", mappedBy="user", fetch="EAGER")
*/
private $posts;
// ...
}
Com isso, sempre que você carregar um User
, seus Post
s relacionados serão carregados automaticamente.
Caso essas soluções não sejam suficientes e você esteja procurando por algo mais específico ou flexível, você pode considerar criar um repositório personalizado para a sua entidade e adicionar métodos que encapsulem essas lógicas de consulta específicas.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.