我一直在阅读Doctrine的文档,但我还没有找到一种对findAll()结果进行排序的方法。
我使用的是symfony2 +原则,这是我在控制器中使用的语句:
$this->getDoctrine()->getRepository('MyBundle:MyTable')->findAll();
但我希望结果是按用户名升序排序的。
我一直在尝试以这种方式传递一个数组作为参数:
findAll( array('username' => 'ASC') );
但是它不工作(它也不会抱怨)。
有没有办法在不构建DQL查询的情况下做到这一点?
发布于 2013-06-15 12:09:13
正如@Lighthart所示,是的,这是可能的,尽管它向控制器添加了大量脂肪并且不是干燥的。
你真的应该在实体存储库中定义你自己的查询,这是简单和最佳的实践。
use Doctrine\ORM\EntityRepository;
class UserRepository extends EntityRepository
{
public function findAll()
{
return $this->findBy(array(), array('username' => 'ASC'));
}
}
然后,您必须告诉您的实体在存储库中查找查询:
/**
* @ORM\Table(name="User")
* @ORM\Entity(repositoryClass="Acme\UserBundle\Entity\Repository\UserRepository")
*/
class User
{
...
}
最后,在你的控制器中:
$this->getDoctrine()->getRepository('AcmeBundle:User')->findAll();
发布于 2014-09-02 18:18:51
$this->getDoctrine()->getRepository('MyBundle:MyTable')->findBy([], ['username' => 'ASC']);
发布于 2017-04-04 17:58:48
简单:
$this->getDoctrine()->getRepository('AcmeBundle:User')->findBy(
array(),
array('username' => 'ASC')
);
https://stackoverflow.com/questions/17116888
复制相似问题