【问题标题】:How to order results with findBy() in Doctrine如何在 Doctrine 中使用 findBy() 对结果进行排序
【发布时间】:2012-08-16 10:05:13
【问题描述】:

我在 Doctrine 存储库中使用 findBy() 方法:

$entities = $repository->findBy(array('type'=> 'C12'));

我如何订购结果?

【问题讨论】:

    标签: php doctrine-orm


    【解决方案1】:
    $cRepo = $em->getRepository('KaleLocationBundle:Country');
    
    // Leave the first array blank
    $countries = $cRepo->findBy(array(), array('name'=>'asc'));
    

    【讨论】:

      【解决方案2】:
      $ens = $em->getRepository('AcmeBinBundle:Marks')
                    ->findBy(
                       array(), 
                       array('id' => 'ASC')
                     );
      

      【讨论】:

        【解决方案3】:

        findBy的第二个参数是ORDER。

        $ens = $em->getRepository('AcmeBinBundle:Marks')
                  ->findBy(
                     array('type'=> 'C12'), 
                     array('id' => 'ASC')
                   );
        

        【讨论】:

        • 教义网站上的 API 文档显然与实际源代码不匹配。 github.com/doctrine/doctrine2/blob/2.4/lib/Doctrine/ORM/… 说明你是对的。
        • 我可以设置多个订单吗?
        • 发现这个问题有点晚了,但对于其他对此感到疑惑的人,是的,您可以添加多个“order by”,只需在第二个参数数组中添加更多元素并定义字段名称“ASC”或“DESC”。即:array('priority'=>'ASC','id'=>'ASC').
        • 如果 AcmeBinBundle:Marks 与“产品”相关的 ManyToOne 并且我们想按产品对象中的字段排序怎么办?这可能吗?
        • @RodolVelasco findBy 用于基本查询场景,对于更复杂的场景,请改用查询。喜欢$qb = $em->getRepository('AcmeBinBundle:Marks')->createQueryBuilder('m')->...
        猜你喜欢
        • 2012-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-08
        • 2021-06-29
        • 1970-01-01
        • 2014-05-13
        相关资源
        最近更新 更多