Symfony 我如何正确实施';朋友关系';有条理
我有一个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
/**
* @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