我有三个表 - User和Friend($ owner,$ friend),它们具有ManyToMany关系并且Post-connected连接到User OneToMany。朋友表是由@JoinTable创建的,我的问题是创建一个正确的查询,显示友好用户的帖子并登录;
PostRepository:
/**
* @param User $user
* @return array
*/
public function selectFriendsPost(User $user)
{
return $this->createQueryBuilder("post")
->select('user', 'friends', 'owners')
->leftJoin('user.friends', 'friends')
->leftJoin('user.owners', 'owners')
->where('post.owner = : friends')
->setParameter('userId', $user->getFriends())
->orderBy("post.createdAt", "DESC")
->getQuery()
->getResult();
}
用户实体:
/**
* @var Post[]ArrayCollection
*
* @ORM\OneToMany(targetEntity="Post", mappedBy="owner")
* @ORM\JoinColumn(name="owner_id", referencedColumnName="id")
*/
private $posts;
/**
* @var ArrayCollection
* @ORM\ManyToMany(targetEntity="User", inversedBy="owners")
* @ORM\JoinTable(name="Friend",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="friend_user_id", referencedColumnName="id")}
* )
*/
private $friends;
/**
* @var ArrayCollection
* @ORM\ManyToMany(targetEntity="User", mappedBy="friends")
*/
private $owners;
错误:
[Semantical Error] line 0, col 84 near '.friends friends': Error: Identification Variable user used in join path expression but was not defined before.
答案 0 :(得分:0)
->leftJoin('BundleName:User','user','WITH','user.pkUser= post.refUser')
尝试以这种方式加入表格..首先BundleName:EntityName
然后别名name
然后with
然后加入声明。