Doctrine orm 条令检索具有一对多关联的实体数据

Doctrine orm 条令检索具有一对多关联的实体数据,doctrine-orm,Doctrine Orm,我希望通过dql语句在自定义存储库中获取包含其类别的菜单的数据,但它不返回关联的实体。我需要它作为json数据,所以我在函数调用中添加了水合模式Query::hydrome\u数组 /** * @ORM\Entity(repositoryClass="Company\Repository\Doctrine\MenuRepository") * @ORM\Table(name="menu") */ class Menu { /** * @var \Company\Entit

我希望通过dql语句在自定义存储库中获取包含其类别的菜单的数据,但它不返回关联的实体。我需要它作为json数据,所以我在函数调用中添加了水合模式Query::hydrome\u数组

/**
 * @ORM\Entity(repositoryClass="Company\Repository\Doctrine\MenuRepository")
 * @ORM\Table(name="menu")
 */
class Menu {
    /**
     * @var \Company\Entity\MenuCategory[]
     *
     * @ORM\OneToMany(targetEntity="Company\Entity\MenuCategory", mappedBy="menu")
     */
    protected $categories;
}

/**
 * @ORM\Entity(repositoryClass="Company\Repository\Doctrine\MenuCategoryRepository")
 * @ORM\Table(name="menu_category")
 */
class MenuCategory {
    /**
     * @var \Company\Entity\Menu
     *
     * @ORM\ManyToOne(targetEntity="Company\Entity\Menu", inversedBy="categories")
     * @ORM\JoinColumn(nullable=false)
     */
    protected $menu;
}

class MenuRepository extends EntityRepository implements MenuRepositoryInterface {

    public function findById($id, $hydration = Query::HYDRATE_OBJECT) {
        $queryBuilder = $this->createQueryBuilder('menu')
            ->leftJoin('menu.categories', 'categories')
            ->where('menu.id = :menuId')
            ->setParameter('menuId', $id);

        return $queryBuilder->getQuery()->getSingleResult($hydration);
    }

}
结果如下:

array(4) {
   ["id"]=>int(1)
   ["name"]=> string(6) "Test"
}

您希望数据库中有哪些菜单和类别?因为你想查询类别而不是菜单,你应该先选择category where menu…Add to your query builder:->addSelect'categories'谢谢Cerad,这是个错误。如果我不选择它们,它们就不会出现在结果中:有时候很容易。。。