Doctrine,Symfony3,查询来自其他实体数组

时间:2017-01-30 14:36:22

标签: php doctrine-orm symfony

我在使用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获取的用户数组。解决方案可能非常简单。

1 个答案:

答案 0 :(得分:0)

对于数组,您需要在UserRepository中构建dql-query并将结果作为数组获取OR您可以使用关系getFriends并从您的用户实体获取数组集合。但是,我不明白你为什么不使用多种关系,在这种情况下,朋友将是用户实体,而不是朋友实体。