我正在使用querybuilder构建一个EntityRepository查询。我有一个ManyToOne关系(通过ID)我试图通过关系的值来命令查询。代码片段如下。
namespace AppBundle\Entity\Repository;
class ContratoRepository extends EntityRepository
{
public function getWithoutParams($ops)
{
$query=$this->createQueryBuilder('e')
->orderBy('e.proc','ASC');
return $query->getQuery()->getResult();
}
现在我的实体
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\Repository\ContratoRepository")
*/
class Contrato
{
...
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\ContratosAdmin\Proc")
* @ORM\JoinColumn(name="id_proc", referencedColumnName="id_proc")
* @ORM\OrderBy({"name" = "ASC"})
**/
private $proc;
现在我的问题是,是否可以通过我的Proc Entity中的“name”字段进行排序?就像现在一样,它按照它的顺序排序。
谢谢你, 问候。
答案 0 :(得分:2)
根据学说文档应该是可能的: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/ordered-associations.html
但根据这一点,您将不得不稍微调整您的查询,否则orderBy Annotation将不会包含在查询中。
尝试此查询:
public function getWithoutParams($ops)
{
$query=$this->createQueryBuilder('e')
->select('e, p')
->leftJoin('e.proc', 'p');
return $query->getQuery()->getResult();
}
根据文档,在这种情况下应该自动添加orderBy。
对于没有Annotation的用途,只需加入关系并添加手动命令,如Grechka所述。