【问题标题】:Zendframework2 using Doctrine orderBy is not "ordering" at allZendframework2 使用 Doctrine orderBy 根本不是“排序”
【发布时间】:2013-07-21 10:28:21
【问题描述】:

我真的处于没有想法的地步。我只想用 Doctrine 订购类别。在阅读了一点教义文档之后,我在控制器中使用了以下内容:

$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 有点矫枉过正。

任何帮助将不胜感激。我也希望这有足够的代码让你们得到图片。但我宁愿在这里显示“有问题”的部分,而不是大量代码。

【问题讨论】:

  • findBy 函数的第二个参数用于排序,所以是正确的。我想知道,你拿回来什么?什么都没有或没有正确排序的列表? “createdTime”是什么类型/格式?

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 2012-07-19
    相关资源
    最近更新 更多