【问题标题】:Limitting Rows For Doctrine FindAll Method限制 Doctrine FindAll 方法的行
【发布时间】:2011-07-28 13:40:50
【问题描述】:

我正在尝试限制从学说的 FindAll 方法返回的行。

public function getActiveUsersByPoint($limit = 100){
    $users = $this->userRepository->findAll();

    return $users;
}

此代码有效,但我不能使用 $limit 变量来限制结果。我该怎么做?

【问题讨论】:

    标签: zend-framework doctrine


    【解决方案1】:

    EntityRepository#findBy() 方法还接受 orderings、limit 和 offset 作为第二到第四个参数:

    $tenUsers = $em->getRepository('MyProject\Domain\User')
                   ->findBy(
                       array('age' => 20),        // $where 
                       array('name' => 'ASC'),    // $orderBy
                       10,                        // $limit
                       0                          // $offset
                     );
    

    【讨论】:

      【解决方案2】:

      为了找到所有结果,你应该将一个空数组传递给 findBy 方法,我认为这是你假装的:

      $users= $em->userRepository->findBy(
                  array(),
                  array('id' => 'DESC'),
                  10,
                  0
              );
      

      第一个参数是一个空数组,它相当于findAll(),然后是顺序(我把id作为样本),然后是limit,最后是偏移量。

      【讨论】:

        【解决方案3】:

        如果您的问题是针对 Doctrine 1.x,FindAll 表示“查找所有”。要限制结果,请使用 DQL:

        $q = Doctrine_Query::create()
          ->from('UserRepository')
          ->limit($limit);
        $users = $q->execute();
        

        【讨论】:

        • 这是学说 1.x ...我的答案是 2.x
        猜你喜欢
        • 2013-06-11
        • 2013-04-20
        • 2016-04-09
        • 1970-01-01
        • 2011-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-01
        相关资源
        最近更新 更多