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

时间:2014-10-06 09:40:40

标签: doctrine-orm

我想通过dql语句获取菜单中的数据,包括自定义存储库中的类别,但它不会返回关联的实体。我需要它作为json数据,所以我将水合模式 Query :: HYDRATE_ARRAY 添加到函数调用中。

/**
 * @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"
}

0 个答案:

没有答案