首页 > 解决方案 > 在 Symfony 3.4 中选择没有某些属性的对象

问题描述

我在 Symfony 中有一个我无法解决的问题。我有一个实体类,例如类别,我有 $id、$name、$description、OneToMany User[] $members、OneToMany Book[] $books 现在...我需要获取所有类别(例如 WHERE description IS NOT NULL ) 但在结果中,我不想拥有 $books。
我需要带有 ID、名称、描述和 [member1, member2...] 但没有书籍的类别。我使用类似的东西:

$em->getRepository('AppBundle:Category')->findAll();

标签: phpsymfonydoctrine

解决方案


您可以使用->select('fieldA, fieldB')查询特定字段

在您的存储库中创建一个方法以进行自定义查询:

public function findAllWithoutBooks()
{
    return $this->createQueryBuilder('c')
        ->select('c.id, c.name, c.description')
        ->leftJoin('c.members', 'm')
        ->addSelect('m.id AS member_id, m.name AS member_name')
        ->andWhere('c.description IS NOT NULL')
        ->getQuery()
        ->getResult()
}

并像任何其他方法一样使用它:

$em->getRepository('AppBundle:Category')->findAllWithoutBooks();

推荐阅读