我有一个联系人实体和一个用户实体与多对多的关系来设置收藏夹。学说多对多的查询生成器
我尝试构建查询来查找联系人是否是用户的最爱。学说返回以下错误:
[Semantical Error] line 0, col 81 near 'favoris = :user': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.
这里是我的查询:
public function isFavori(users $user, contacts $contacts) {
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder('c');
$query = $qb
->select('1')
->from('contactsBundle:contacts', 'c')
->join('contactsBundle:users', 'f', 'WITH', 'c.favoris = :user')
->where('c = :contact')
->setParameter('user', $user)
->setParameter('contact', $contacts)
;
$querystring = $qb->getQuery();
return $qb->getQuery()->getResult();
}
下面是从接触实体加入注释:
/**
* @ORM\ManyToMany(targetEntity="Curuba\contactsBundle\Entity\users", inversedBy="contactsfavoris")
*
*/
private $favoris;
谢谢你的帮助。我们为什么要指定JoinTable名称?学说自动创建它?你是说查询对象只能用于一对一或一对多的关系吗? – curuba 2015-02-01 08:43:42
可能是这种情况,因为如果我使用'' - >和Where('f.id =:user')''那么它就可以工作。唯一的区别是我使用一个id而不是对象本身... – curuba 2015-02-01 08:48:02
当我尝试你的建议时,它会触发以下错误:'Class'Curuba \ contactsBundle \ Entity \ contacts_users'没有被定义.''。当我用''contactsBundle:contacts_users''尝试时,它也不起作用。 您是否需要实际创建类来描述自己的多对多关系? – curuba 2015-02-01 11:38:41