原则ORM通过注释对象字段排序 [英] Doctrine ORM order by annotations object fields

查看:169
本文介绍了原则ORM通过注释对象字段排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以简单如下:我在一些实体中有以下代码

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.

doctrine2文档中的更多内容

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆