Symfony 4通过id获取用户实体

时间:2018-05-09 10:10:58

标签: controller entity symfony4

我正在尝试创建一个简单的ManyToMany关系,目标是将一个朋友添加到DataBase中。

我正在尝试使用我的控制器添加朋友,但我找不到使用该ID获取用户实体的方法。

按照文档中的示例:

/**
 * @Entity
 */
class User
{
    /**
     * @Id
     * @Column(type="integer")
     */
    private $id;

    /**
     * @ManyToMany(targetEntity="User")
     * @JoinTable(name="friends",
     *     joinColumns={@JoinColumn(name="user_a_id", referencedColumnName="id")},
     *     inverseJoinColumns={@JoinColumn(name="user_b_id", referencedColumnName="id")}
     * )
     * @var \Doctrine\Common\Collections\ArrayCollection
     */
    private $friends;

    /**
     * Constructor.
     */
    public function __construct()
    {
        $this->friends = new \Doctrine\Common\Collections\ArrayCollection();
    }

    /**
     * @return array
     */
    public function getFriends()
    {
        return $this->friends->toArray();
    }

    /**
     * @param  User $user
     * @return void
     */
    public function addFriend(User $user)
    {
        if (!$this->friends->contains($user)) {
            $this->friends->add($user);
            $user->addFriend($this);
        }
    }

    /**
     * @param  User $user
     * @return void
     */
    public function removeFriend(User $user)
    {
        if ($this->friends->contains($user)) {
            $this->friends->removeElement($user);
            $user->removeFriend($this);
        }
    }

我的控制器:

    /**
     * @Route("/addFriends")
     */
    public function addFriends()
    {
        if (isset($_POST['add'])) {
            $id = $_POST['id'];
            $user = $this->getUser();
            $user->addFriend($id);
        }
        return $this->redirectToRoute('friends');
    }

而不是$ id Symfony希望我使用实体的实例: 参数1传递给App \ Entity \ User :: addFriend()必须是App \ Entity \ User的实例,给出字符串,我找不到使用方法

1 个答案:

答案 0 :(得分:1)

试试这个:

        if (isset($_POST['add'])) {
            $id = $_POST['id'];
            $user = $this->getUser();
            $friend = $this->getDoctrine()->getRepository(User::class)->find($id);
            $user->addFriend($friend);
        }

Here详细说明了您应该如何使用学说实体