Php 核心原则::getTable()->;findAll()如何指定顺序?
使用Php 核心原则::getTable()->;findAll()如何指定顺序?,php,symfony1,doctrine,Php,Symfony1,Doctrine,使用doctor\u表对象时,是否可以在使用findAll()或findByWhatever()时指定返回集合的顺序 在中,我看到了一些关于getOrderByStatement()和processOrderBy()的内容,但不清楚如何使用它们…根据Jon Wage的说法,在这种情况下,您应该创建一个查询…可以在中找到,您实际上可以在模式中指定默认的order by: Foo: columns: ... options: orderBy: bar DESC 请注意,当您
doctor\u表
对象时,是否可以在使用findAll()
或findByWhatever()时指定返回集合的顺序
在中,我看到了一些关于getOrderByStatement()
和processOrderBy()
的内容,但不清楚如何使用它们…根据Jon Wage的说法,在这种情况下,您应该创建一个查询…可以在中找到,您实际上可以在模式中指定默认的order by:
Foo:
columns:
...
options:
orderBy: bar DESC
请注意,当您想要指定不同的顺序时,您仍然可以创建一个查询并覆盖默认顺序。在我的例子中,问题是我有这样一个语句
$destinos = $em->getRepository('BackendDestinyBundle:Destiny')->findAll();
最后我把它改成了CreateQuery语句,它的功能完全相同,但我可以用OrderBy语句
$destinos = $em->createQuery("SELECT d FROM BackendDestinyBundle:Destiny d order by d.name")->getResult();
也可以将第一个数组留空
$em->getRepository('BackendDestinyBundle:Destiny')->findBy(array(), array('title'=>'asc'));
是的,我想这可能是唯一的解决办法,只是我不确定。谢谢,我不知道。这很有帮助。谢谢你,这不是只针对关系吗?不,它也适用于模型,但实际上你也可以在关系上使用这个技巧。这不是一个好主意。Orderbys可能很昂贵,并且您不想为每个查询都发布它们。您在这里讨论的是原则2,顺便说一下,这不是使用原则的好方法。应该在不编写sql代码的情况下生成查询。。。你正在失去ORM的所有优势…事实上,他在这里使用ORM非常好,因为它是DQL,而不是SQL。好吧,我的错,请不要哭,只是想帮我谢谢你。这就是我想要的。快速、简单且有效。这实际上比查询生成器(在我看来)要好,毕竟findAll()
的实现是这样的调用findBy(array())
谢谢!我刚才使用了:公共函数findAll(){return$this->findBy(array(),array('name'=>'ASC'));}
快速覆盖为实体的表单返回返回返回的findAll顺序。