Doctrine orm Symfony 2.8:DQL查询以显示arraycollection

Doctrine orm Symfony 2.8:DQL查询以显示arraycollection,doctrine-orm,dql,doctrine-query,Doctrine Orm,Dql,Doctrine Query,我是Symfony 2的初学者,DQL查询有一个问题:我试图显示一个ArrayCollection属性 我的情况是这样的:两个班级以“一人一人”和“一人一人”的形式联合在一起 dishcrade.php: /** * @var Dish $dish * * @ORM\ManyToOne(targetEntity="Dish", inversedBy="grades", cascade={"persist", "remove", "merge"}) * @ORM\JoinColumn(name=

我是Symfony 2的初学者,DQL查询有一个问题:我试图显示一个ArrayCollection属性

我的情况是这样的:两个班级以“一人一人”和“一人一人”的形式联合在一起

dishcrade.php:

/**
* @var Dish $dish
*
* @ORM\ManyToOne(targetEntity="Dish", inversedBy="grades", 
cascade={"persist", "remove", "merge"})
* @ORM\JoinColumn(name="dish_id", referencedColumnName="id", nullable=false)
*
*/
private $dish;
Dish.php:

/**
* @var \Doctrine\Common\Collections\Collection $grades
*
* @ORM\OneToMany(targetEntity="DishGrade", mappedBy="dish", cascade={"all"},
orphanRemoval=true)     
*/
private $grades;
这是我的控制器,它返回一个对象数组“dishcrade”

这是我的查询,但它不起作用:

DishRepository.php:

public function getGrades($id){


$qb = $this->_em->createQueryBuilder();

return $qb->select('d.grades')
    ->from('AwadacApiBundle:Dish', 'd')
    ->where('d.id = :id')
    ->setParameter('id', $id)
    ->getQuery()
    ->getResult();


 }
我得到的错误代码是:

{“代码”:500,“消息”:“[Semantical Error]第0行,第9列靠近'AwadacApiBundle:Dish的等级”:错误:无效的PathExpression。必须是StateFieldPathExpression。”,“errors”:null}

当我想从我的对象“Dish”中获取所有属性时,它是有效的,所以我只是想知道为什么我不能单独显示这个ArrayCollection


谢谢你抽出时间

如果您已经在Dish存储库中,则可以通过

$qb = $this->createQueryBuilder('d');
此外,只需删除->from()语句,我想它应该可以正常工作:

return $qb->select('d.grades')
        ->where('d.id = :id')
        ->setParameter('id', $id)
        ->getQuery()
        ->getResult();

不客气!请不要错过检查我的答案为“接受”,如果它帮助你!先谢谢你。regardsbut如果我从“我得到一个错误:'d.id=:id'”中删除“->”:错误:未定义类“d”。当我将行“select->('d.grades')”更改为“select->('d')”时,我可以从包含“grades”的Dish对象中获取所有属性。现在我只想获取“grades”属性:sdid您已经将“d”别名添加到createQueryBuilder方法中了,如图所示?不,我没有,我的错。我已经更改了它,但仍然得到了与第一次相同的错误:“code”:500,“message”:“[语义错误]……似乎您仍然通过_em属性访问该方法,不是吗?如果您还没有明确使用
$qb=$this->createQueryBuilder('d');
return $qb->select('d.grades')
        ->where('d.id = :id')
        ->setParameter('id', $id)
        ->getQuery()
        ->getResult();