使用doctrine中的findAll选择不同的结果

时间:2015-11-25 13:54:09

标签: php symfony doctrine-orm doctrine

我可以使用findAll()功能选择不同的值吗?

我正在尝试:

$province = $em->getRepository("FrontendBundle:Store")->findAll(array('distinct' => true));

但它似乎不起作用。

3 个答案:

答案 0 :(得分:9)

findall不支持此行为,为了即时进行查询(在单独的存储库类中更好),您可以执行以下操作:

/** @var  $qb  \Doctrine\ORM\QueryBuilder*/
$qb = $em->getRepository("GerlaFrontendBundle:Store")->createQueryBuilder("p");

$province = $qb->select("p")
    ->distinct(true)
    ->getQuery()
    ->getResult();

希望这个帮助

答案 1 :(得分:1)

$province = $em->getRepository("FrontendBundle:Store")->findBy(array('distinct' => true));

另见http://symfony.com/doc/current/book/doctrine.html#fetching-objects-from-the-database

一切顺利

答案 2 :(得分:0)

如果要使用findAll()并使其与众不同,请在实体存储库文件中覆盖findAll()并将此方法添加到其中。

public function findAll() {
   return $this->findBy(array(), array(array('distinct' => TRUE));
}

我主要用于在findAll()上设置顺序,但是它也适用于不同的情况。