首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何对findAll主义的方法进行排序?

如何对findAll主义的方法进行排序?
EN

Stack Overflow用户
提问于 2013-06-15 04:38:26
回答 11查看 189.7K关注 0票数 124

我一直在阅读Doctrine的文档,但我还没有找到一种对findAll()结果进行排序的方法。

我使用的是symfony2 +原则,这是我在控制器中使用的语句:

$this->getDoctrine()->getRepository('MyBundle:MyTable')->findAll();

但我希望结果是按用户名升序排序的。

我一直在尝试以这种方式传递一个数组作为参数:

findAll( array('username' => 'ASC') );

但是它不工作(它也不会抱怨)。

有没有办法在不构建DQL查询的情况下做到这一点?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2013-06-15 12:09:13

正如@Lighthart所示,是的,这是可能的,尽管它向控制器添加了大量脂肪并且不是干燥的。

你真的应该在实体存储库中定义你自己的查询,这是简单和最佳的实践。

代码语言:javascript
复制
use Doctrine\ORM\EntityRepository;

class UserRepository extends EntityRepository
{
    public function findAll()
    {
        return $this->findBy(array(), array('username' => 'ASC'));
    }
}

然后,您必须告诉您的实体在存储库中查找查询:

代码语言:javascript
复制
/**
 * @ORM\Table(name="User")
 * @ORM\Entity(repositoryClass="Acme\UserBundle\Entity\Repository\UserRepository")
 */
class User
{
    ...
}

最后,在你的控制器中:

代码语言:javascript
复制
$this->getDoctrine()->getRepository('AcmeBundle:User')->findAll();
票数 244
EN

Stack Overflow用户

发布于 2014-09-02 18:18:51

代码语言:javascript
复制
$this->getDoctrine()->getRepository('MyBundle:MyTable')->findBy([], ['username' => 'ASC']);
票数 88
EN

Stack Overflow用户

发布于 2017-04-04 17:58:48

简单:

代码语言:javascript
复制
$this->getDoctrine()->getRepository('AcmeBundle:User')->findBy(
    array(),
    array('username' => 'ASC')
);
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17116888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档