我正在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参数传递给存储库函数。感谢
答案 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
希望这会有所帮助:)