所以它很简单:我在某个实体中有以下代码
/**
* @var ServiceOffer
*
* @ORM\OneToMany(targetEntity="ServiceOffer", mappedBy="serviceProvider")
* @ORM\OrderBy({"service" = "desc"})
*/
private $offers;
我需要做的是这样的事情
/**
* @var ServiceOffer
*
* @ORM\OneToMany(targetEntity="ServiceOffer", mappedBy="serviceProvider")
* @ORM\OrderBy({"service.points" = "desc"})
*/
private $offers;
这不起作用,我不想通过一些我想直接使用注释的功能来完成它,有什么方法可以做到这一点吗?
顺便说一句,这是要点:
/**
* @var integer
*
* @ORM\Column(name="points", type="integer", nullable=true)
*/
private $points;
不,这是不可能的。您应该通过创建 dql 来解决此问题。
OrderBy 中的 DQL 片段仅允许包含不合格、不带引号的字段名称和可选的 ASC/DESC 位置语句。多个字段之间用逗号 (,) 分隔。引用的字段名称必须存在于 @ManyToMany 或 @OneToMany 注释的 targetEntity 类中.
More in 学说2文档 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/annotations-reference.html#annref-orderby.
DQL 示例
SELECT provider, offer, service
FROM \MyNamespace\Entity\ServiceProvider provider
INNER JOIN provider.offers offer
INNER JOIN offer.service service
WHERE
provider.id = 1
注意,这段代码片段provider, offer, service
在此处返回您需要的所有实体或字段非常重要,因此如果可能的话,学说将加载它一次。换句话说,如果您没有包含任何实体并调用它,则原则将延迟加载它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)