无效的PathExpression.必须是SingleValuedAssociationField

sta*_*tax 4 dql symfony doctrine-orm

我正在尝试:

class PrixRepository extends EntityRepository
{
    public function findPrixLike($film)
    {
        $query = $this->createQueryBuilder('p')
                      ->addSelect('s')
                      ->from('MG\UserBundle\Entity\SocieteDiffuseur', 's')
                      ->join('s.paysDiffs', 'pays')
                      ->where(':filmId MEMBER OF p.films')
                      ->andWhere('pays.id MEMBER OF p.pays')
                      ->setParameter('filmId', $film)
                      ->getQuery();

        $result = $query->getResult();

        return $result;
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

[Semantical Error] line 0, col 156 near 'id MEMBER OF': Error: Invalid PathExpression. Must be a SingleValuedAssociationField.
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到我的实体结构:注意:未定义索引:joinColumns doctrine 2 + symfony 2 我尝试了多个查询,但我真的不知道自己要做什么.

sta*_*tax 11

祝贺@olaurendeau.就像他说的那样,学说是一个实体而不是一个id,所以正确的查询是:(支付会员而不是pays.id ......)

public function findPrixLike($film)
{
    $query = $this->createQueryBuilder('p')
              ->addSelect('s')
              ->from('MG\UserBundle\Entity\SocieteDiffuseur', 's')
              ->join('s.paysDiffs', 'pays')
              ->where(':filmId MEMBER OF p.films')
              ->andWhere('pays MEMBER OF p.pays')
              ->setParameter('filmId', $film)
              ->getQuery();

$result = $query->getResult();

return $result;
Run Code Online (Sandbox Code Playgroud)