使用实体内部的ORM表达式获取所有行

时间:2013-04-14 14:08:45

标签: symfony

我无法找到关于我在实体内部看到的“ORM表达式”的良好文档,所以我有点混淆。

我在用户实体中有这个:

/**
* @var ArrayCollection $administered
*
* @ORM\ManyToMany(targetEntity="Done\PunctisBundle\Entity\Brand", inversedBy="admins")
* @ORM\JoinTable(name="user_brand_administered")
**/
protected $administered; 

这很好用,但是我需要更简单的东西,我需要var administrated 来获取 Brand 实体的所有值,而不是加入表user_brand_administrated它在下面的代码上做了。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

为什么你想要这里的所有价值?

使用自定义EntityRepository,您可以使用方法来检索您想要的对象。

例如。

class UserRepository extends EntityRepository
{
    public function findOneWithRelation($id)
    {
        $qb = $this->createQueryBuilder('u')
            ->select('u, b')
            ->leftJoin('u.administered, b')
            ->where('u.id = :id')
            ->setParameter('id', $id)
            ->getQuery()
            ->getResult();
    }
}

将此存储库附加到您的用户实体:

/**
 * @Entity(repositoryClass = "Path\To\UserRepository")
 */
class User
{
// ...
}

像这样,您可以检索所有品牌的用户。

希望它有用。

最好的关注。