Doctrine ManyToMany StateFieldPathExpression错误

时间:2016-04-03 15:48:33

标签: php symfony doctrine-orm

我在这里已经阅读了很多关于这个错误的问题,但仍然无法得到它。我有3个实体 - 网站,用户和标签。一个站点可以拥有一个唯一用户,但不同用户可以拥有相同的标签,反之亦然。其表中的一个标签对用户和站点具有FK。我正在尝试使用以下代码显示与某个特定站点相关的所有标记:

->add('tags','entity', array(
'class'=> 'MyBundle:Tags',
'query_builder' => function(EntityRepository $er) use ($siteid)
{
    return $er->createQueryBuilder('s')->where('s.asiteid = :siteid')
    ->setParameter('siteid', $siteid);
}

我也尝试过这个:

'query_builder' => function(EntityRepository $er) use ($siteid) {return $er->createQueryBuilder('t')
            ->join('\MyBundle\Entity\Mysites','ta', \Doctrine\ORM\Query\Expr\Join::WITH,'t.asiteid=ta.id')
            ->where('t.asiteid = :asiteid')
            ->setParameter('asiteid', $siteid);}

标签实体中的属性映射如下:

 manyToMany:
    userid:
        targetEntity: MyBundle\Entity\User
        cascade: {  }
        mappedBy: null
        inversedBy: null
        joinColumns:
            userid:
                referencedColumnName: id
        orphanRemoval: false
    asiteid:
        targetEntity: \MyBundle\Entity\Mysites
        cascade: {  }
        mappedBy: asiteid
        inversedBy: id
        joinColumns:
            siteid:
                referencedColumnName: id
        orphanRemoval: false

但无论如何我得到[语义错误]第0行,第113行附近' asiteid = ta.id':错误:无效的PathExpression。期望StateFieldPathExpression或SingleValuedAssociationField。任何想法都会受到欢迎。

1 个答案:

答案 0 :(得分:0)

通过从ManyToMany更改为ManyToOne解决了该问题。来自现有数据库的regenerated entities,一切正常。