使用不同的Doctrine2

时间:2012-05-18 19:19:24

标签: symfony doctrine-orm distinct

我正在symfony2中开发一个应用程序并使用doctrine2。我创建了一个具有一个函数的自定义存储库类:

<?php

namespace Anotatzailea\AnotatzaileaBundle\Repository;

use Doctrine\ORM\EntityRepository;

/**
 * InterpretatzeaRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class InterpretatzeaRepository extends EntityRepository
{

    public function getInterpDesberdinak($value)
    {
          $qb = $this->createQueryBuilder('c')
              ->select('DISTINCT c.attribute')
               ->where('c.fer = :Value')
               ->setParameter('Value', $value);
          $Emaitza = $qb->getQuery()->getResult();
          return $Emaitza;
    }       

}

我想用这个函数得到的是所有“Interpretatzea”对象的数组,这些对象具有不同的c.attribute并且都具有c.fer = value。查询是否正确?我还想知道如何将value参数传递给存储库函数。感谢

1 个答案:

答案 0 :(得分:1)

粗略看看你的存储库方法表明它看起来没问题:) IIRC,我认为使用DISTINCT就可以了。如果您遇到问题,可以随时改为GROUP BY

至于在控制器中调用repo方法并将$value变量传递给它,这非常简单;例如:

// in your controller
$value = 'foo';

// get doctrine connection from DI, etc.
$em = $this->getDoctrine()
    ->getEntityManager();

// get the repository object for your 
// entity and call your repository method
$result = $em->getRepository('AnotatzaileaAnotatzaileaBundle:Interpretatzea')
    ->getInterpDesberdinak($value);

// ... do something with your $result here

请注意,您使用命名空间和bundle的连接版本,后跟冒号和实体;例如:AcmeTestBundle:User

希望这会有所帮助:)