Symfony2自定义存储库方法

时间:2014-02-06 09:07:39

标签: symfony doctrine-orm

我有一个实体LeagueSeason,而赛季与联盟有@ManyToOne的关系。

现在在我的联盟控制器的showAction中,我希望为所有季节提供一个属于当前($ id)联盟的视图。

因此我在findAllBelongingSeasons中实现了LeagueRepository功能,如下所示:

public function findAllBelongingSeasons($league_id)
{
    return $this->getEntityManager()
        ->createQuery('
            SELECT s FROM xxx:Season s
            WHERE s.league_id = :league_id'
        )
        ->setParameter('league_id', $league_id)
        ->getResult();
}

问题是,我现在得到消息,课程季节没有现场联盟_id。舒尔,在季节表的数据库中存在。但是,学说现在想要通过对象来处理它,并且季节中没有联盟_id,因为它具有$league的属性@ORM\ManyToOne(targetEntity="xxx\xxx\Entity\League")已配置。

那该怎么办呢?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

public function findAllBelongingSeasons($league_id)
{
    return $this->getEntityManager()
        ->createQuery('
            SELECT s FROM xxx:Season s
            WHERE s.league = :league_id'
        )
        ->setParameter('league_id', $league_id)
        ->getResult();
}

是正确的方法(在league_id中修改league

基本上,正如您所说,doctrine处理像“proxy”一样使用的对象来访问db表和列。这样你就必须引用doctirne(objects)映射而不引用db相应的字段