我在使用Doctrine和我的实体时遇到了问题。请参阅下面的问题 我的实体:
class User
{
// ...
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="Friend", mappedBy="userB")
*/
private $friends;
// ...
/**
* Get friends
*
* @return ArrayCollection
*/
public function getFriends()
{
return $this->friends;
}
}
和
class Friend
{
/**
* @var string
*
* @ORM\Column(name="relation", type="string", length=255)
*/
private $relation;
/**
* @var int
*
* @ORM\ManyToOne(targetEntity="User", inversedBy="friendsWithMe")
*/
private $userA;
/**
* @var int
*
* @ORM\ManyToOne(targetEntity="User", inversedBy="friends")
*/
private $userB;
}
我的UserController
有这个:
/**
* Show the user's friendzone
*
* @Route("/friendzone", name="show_friends")
*/
public function showFriendzoneAction()
{
$friends = $this->getUser()->getFriends();
$users = ???
return $this->render('DevLeaguesBundle:User:show_reduced.html.twig', array(
'users' => $friends,
));
}
我希望控制器做的是将$users
定义为从$friends
获取的用户数组。解决方案可能非常简单。
答案 0 :(得分:0)
对于数组,您需要在UserRepository中构建dql-query并将结果作为数组获取OR您可以使用关系getFriends并从您的用户实体获取数组集合。但是,我不明白你为什么不使用多种关系,在这种情况下,朋友将是用户实体,而不是朋友实体。