使用Doctrine orderBy的Zend Framework 2根本不是“排序”

时间:2013-07-19 16:06:53

标签: php doctrine-orm zend-framework2 sql-order-by

我真的处在一个我缺乏想法的地方。我只想用Do​​ctrine订购类别。在我的控制器中使用以下内容之后,我将使用以下内容:

$categories = $em->getRepository('\Cbox\Entity\Category')->findBy(array('title' =>'news'), array('createdTime' => 'DESC'));

两个列都存在,我也没有得到PHP / Doctrine / Mysql错误。这是正确的方法吗?我也尝试在我的实体中使用orderBy Annotations也没有成功:

/**
* @ORM\OneToMany(targetEntity="Cbox\Entity\Category", mappedBy="box")
* @ORM\OrderBy({"createdTime" = "DESC"})
*/
protected $category;

我也读过有关QueryBuilder和DQL的内容,但这似乎只是为了获得orderBy设置的一点点技巧。

非常感谢任何帮助。我也希望有足够的代码供你们拍照。但我宁愿在这里显示“问题”部分,然后是大量的代码。

1 个答案:

答案 0 :(得分:1)

试试这个

 $qb = $em->createQueryBuilder();
 $qb->select('u')
 ->from('Cbox\Entity\Category u')
 ->where('u.title = :title')
 ->orderBy('u.createdTime', 'DESC')
 ->setParameter('title', news);

现在,如果 Cbox \ Entity \ Category \ Cbox \ Entity \ Category 是正确的实体,那么这必须有效。 如果没有 setParameter(),您可以采用另一种方法做同样的事情,但我不会推荐它。

  $qb->select('u')
 ->from('Cbox\Entity\Category u')
 ->where('u.title = news')
 ->orderBy('u.createdTime', 'DESC');

如果你想看看如何从 $ qb 中获取结果,还有更多内容我建议您点击此链接http://docs.doctrine-project.org/en/latest/reference/query-builder.html