原则ORM通过注释对象字段排序 [英] Doctrine ORM order by annotations object fields
问题描述
所以简单如下:我在一些实体中有以下代码
So its simple like this : I have the following code in some Entity
/**
* @var ServiceOffer
*
* @ORM\OneToMany(targetEntity="ServiceOffer", mappedBy="serviceProvider")
* @ORM\OrderBy({"service" = "desc"})
*/
private $offers;
我需要的是做这样的事情
What i need is to do something like this
/**
* @var ServiceOffer
*
* @ORM\OneToMany(targetEntity="ServiceOffer", mappedBy="serviceProvider")
* @ORM\OrderBy({"service.points" = "desc"})
*/
private $offers;
这不工作我不想通过一些功能来做,我想要直接注释有没有办法这样做?
which is not working i don't want to do it through some function i wanted straight forward with annotations is there any way to do this ?
这是点btw:
/**
* @var integer
*
* @ORM\Column(name="points", type="integer", nullable=true)
*/
private $points;
推荐答案
这不可能。您应该解决这个创建一个dql。
No. This is not possible. You should solve this creating a dql.
OrderBy中的DQL代码片段只允许由不合格的非引用字段名称和可选的ASC / DESC位置声明。多个字段用逗号(,)分隔。 引用的字段名必须存在于@ManyToMany或@OneToMany注释的targetEntity类上。
The DQL Snippet in OrderBy is only allowed to consist of unqualified, unquoted field names and of an optional ASC/DESC positional statement. Multiple Fields are separated by a comma (,). The referenced field names have to exist on the targetEntity class of the @ManyToMany or @OneToMany annotation.
More in doctrine2 documentation.
DQL示例
SELECT provider, offer, service
FROM \MyNamespace\Entity\ServiceProvider provider
INNER JOIN provider.offers offer
INNER JOIN offer.service service
WHERE
provider.id = 1
请注意,此代码段提供,服务
重要的是返回这里所需要的所有实体或领域,因此如果可能,教条将加载一次。换句话说,如果你没有包括任何实体并且要求它,原则将会懒惰地加载它。
Notice, this code snippet provider, offer, service
it's important to return here all entities or fields you will need so doctrine will load it for once, if it's possible. In other words, if you did'nt include any entity and call for it, doctrine will load it lazily.
这篇关于原则ORM通过注释对象字段排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!