获取doctrine2 / symfony2中的最后一个元素

时间:2014-08-18 15:14:46

标签: symfony doctrine-orm

我在两个实体Collaborateur和Conge之间有关系ManyToOne。

 /**
 * @ORM\ManyToOne(targetEntity="Collaborateur", inversedBy="collaborateur", cascade={"remove"})
 * @ORM\JoinColumn(name="collaborateur_id", referencedColumnName="id")
 */
protected $collaborateur;

在我的CongeManager中,我有这个功能:

 public function findCongeByCollaborateur ($collaborateur){
        return $this->getRepository()->findOneBy(array('collaborateur'=>$collaborateur));
    }

它只返回Conge的第一个元素,我想得到最后一个。

2 个答案:

答案 0 :(得分:25)

$this->getRepository()->findOneBy(
         array('collaborateur'=>$collaborateur),
         array('id' => 'DESC')
);

答案 1 :(得分:0)

您应该创建自定义实体存储库。如何执行此操作可以在以下链接中找到:http://symfony.com/doc/current/book/doctrine.html#custom-repository-classes

public function getLastCongeByCollaborateur($collaborateur) {
    return $this->getEntityManager()
        ->createQuery('SELECT conge FROM FullBundleName:Conge conge WHERE collaborateur = :collaborateur ORDER BY conge.id DESC)
        ->setParameter('collaborateur', $collaborateur)
        ->getResult();
}

按降序排序,将返回找到的最后一个元素。