Symfony 我如何正确实施';朋友关系';有条理

Symfony 我如何正确实施';朋友关系';有条理,symfony,doctrine-orm,entity-relationship,Symfony,Doctrine Orm,Entity Relationship,我有一个Symfony应用程序,用户可以通过该应用程序发送好友请求,其他用户可以接收该请求,然后接受或拒绝该请求,从而建立关系。我有一个如何实现这一点的想法,然而,我的经验不足,导致我的墙 友人实体 /** * @ORM\Entity() */ class Friends { const STATUS_PENDING = 'STATUS_PENDING'; const STATUS_FRIEND = 'STATUS_FRIEND'; const STATUS_BLOC

我有一个Symfony应用程序,用户可以通过该应用程序发送好友请求,其他用户可以接收该请求,然后接受或拒绝该请求,从而建立关系。我有一个如何实现这一点的想法,然而,我的经验不足,导致我的墙

友人实体

/**
 * @ORM\Entity()
 */
class Friends
{
    const STATUS_PENDING = 'STATUS_PENDING';
    const STATUS_FRIEND = 'STATUS_FRIEND';
    const STATUS_BLOCKED = 'STATUS_BLOCKED';
    const DEFAULT_STATUS = [self::STATUS_PENDING];

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="myFriends")
     * @ORM\Id
     */
    private $user;

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="friendsWithMe")
     * @ORM\Id
     */
    private $friend;

    /**
     * @ORM\Column(type="simple_array")
     */
    private $status;

    public function __construct()
    {
        $this->status = self::DEFAULT_STATUS;
    }

    public function addFriend(User $user, User $friend): self
    {

         $userID = $user->getId();
         $friendID = $friend->getId();


        switch ($userID)
        {
            case $userID > $friendID:
                $this->setUser($friend);
                $this->setFriend($user);
                break;
            case $userID < $friendID:
                $this->setUser($user);
                $this->setFriend($friend);
                break;
            case $userID ===  $friendID:
                break;
        }

        return $this;
    }


}
控制器如下所示:

    private $entityManager;

    private $friends;

    private $user;

    public function __construct(TokenStorageInterface $tokenStorage, EntityManagerInterface $entityManager)
    {
        $this->user = $tokenStorage->getToken()->getUser();
        $this->friends = new Friends();
        $this->entityManager = $entityManager;
    }

    /**
     * @Route("/api/addFriend/{id}", name="addFriend", requirements={"id"="\d+"}, methods={"POST"})
     * @ParamConverter("user", class="App:User")
     */
    public function addFriend(User $user)
    {
        $loggedInUser = $this->user;
        $add = $this->friends->addFriend($loggedInUser,$user);
        $this->entityManager->persist($this->friends);
        $this->entityManager->flush();
    }
问题是当我尝试使用控制器时。它在persist()处失败,错误如下:

Warning: get_class() expects parameter 1 to be object, int given
我相信问题要么在于我在Friends类中使用用户对象的方式,要么在于创建friend实体的方式。我随后向我展示了最初如何实现多对多用户/朋友关系。有人能帮我指引正确的方向吗?多谢各位

Warning: get_class() expects parameter 1 to be object, int given