如何通过登录人员显示友好用户的帖子

时间:2018-02-01 15:53:46

标签: symfony doctrine-orm

我有三个表 - 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.

1 个答案:

答案 0 :(得分:0)

->leftJoin('BundleName:User','user','WITH','user.pkUser= post.refUser')

尝试以这种方式加入表格..首先BundleName:EntityName然后别名name然后with然后加入声明。