Doctrine orm 条令检索具有一对多关联的实体数据
我希望通过dql语句在自定义存储库中获取包含其类别的菜单的数据,但它不返回关联的实体。我需要它作为json数据,所以我在函数调用中添加了水合模式Query::hydrome\u数组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
/**
* @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,这是个错误。如果我不选择它们,它们就不会出现在结果中:有时候很容易。。。