2016-04-03 10 views
1

私はここでこのエラーについての質問をたくさん読んでいますが、まだそれを得ることはできません。私は、サイト、ユーザー、タグの3つのエンティティを持っています。 1つのサイトには一意のユーザーが1人いることができますが、異なるユーザーには同じタグが付いている場合があります。そのテーブルの1つのタグは、ユーザとサイトに対してFKを持っています。私は、次のコードである特定のサイトに関連するすべてのタグを表示しようとしています:Doctrine ManyToMany StateFieldPathExpressionエラー

->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、col 113は 'asiteid = ta.id'の近くにあります。エラー:無効なPathExpression。 StateFieldPathExpressionまたはSingleValuedAssociationFieldが必要です。どんなアイディアも大歓迎です。

答えて

0

問題はManyToManyからManyToOneに変更することで解決しました。既存のDBからI regenerated entitiesがあり、すべて正常に機能しました。