您好我已经完全成功地设置了我的实体onetoMany和ManyToOne我生成了setter和getter,并且在用户实体中它创建了这个方法:
用户实体:
/**
* @ORM\OneToMany(targetEntity="TB\RequestsBundle\Entity\Requests", mappedBy="followeeuser")
*/
protected $followees;
请求实体:
/**
* @ORM\ManyToOne(targetEntity="TB\UserBundle\Entity\User", inversedBy="followees")
* @ORM\JoinColumn(name="followee_id", referencedColumnName="id", nullable=false)
*/
protected $followeeuser;
当我使用自己的自定义查询时效果很好......但我无法弄清楚如何使用symfony中生成的这个函数:
public function addFollowee(\TB\UserBundle\Entity\User $followee)
{
$this->followees[] = $followee;
}
我不知道该通过那里...我试过首先根据用户的id从twig获取用户对象...工作正常但错误发生:
$user->addFollowee($userRepository->find($target_user_id));
Found entity of type TB\UserBundle\Entity\User on association TB\UserBundle\Entity\User#followees, but expecting TB\RequestsBundle\Entity\Requests
答案 0 :(得分:3)
也许你应该在编码之前考虑一下你的目标。拿一支笔和一张纸。 :)
告诉我,如果我错了,但这就是我认为你要做的事情:
一个用户可以有很多“跟随者”。 一个“跟随者”可以有一个用户。
所以,OneToMany关系没问题。
以下是如何编写它,来自doc:
Requests.php(顺便说一句,你应该使用Request.php)
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="requests")
**/
private $user;
user.php的
/**
* @ORM\OneToMany(targetEntity="Requests", mappedBy="user", cascade={"all"})
**/
private $requests;
public function __construct()
{
$this->requests = new \ArrayCollection();
}
现在您可以检查您的关系是否正常,并更新您的架构:
php app/console doctrine:schema:validate
php app/console doctrine:schema:update --force
关于getter / setters:
Requests.php
public function getUser()
{
return $this->user;
}
public function setUser(User $user) // Please add a Use statement on top of your document
{
$this->user = $user;
return $this;
}
user.php的
public function addRequest(Requests $request)
{
$this->requests->add($request);
return $this;
}
public function removeRequest(Requests $request)
{
$this->requests->removeElement($request);
return $this;
}
// Get requests and set requests (you know how to write those ones)
现在,要将用户设置为请求,请使用
$request->setUser($user);
要向用户添加请求,请使用
$user->addRequest($request);