通过学说获得最新的项目功能



新的学说。我正在尝试构建"列表最新项目功能"。它应该使所有记录更新,> ,如果结果小于50记录,则应该使较旧的记录在获取50个记录之前。

所以,如果我有100个比三个月更新的记录,我想退还所有记录,但没有什么年龄段的记录。如果我有20个记录,我想退还它们,以及此后的30个记录。

一个人将如何使用学说?我不想提出两个查询(如果可能的话,甚至叫它?

目前,我的EntityRepository只是从过去三个月中获取所有记录,如下所示:

public function fetchRecent($from)
{
    $criteria = new Criteria();
    $criteria->where($criteria->expr()->gte('created', $from));
    return $this->matching($criteria);
}

edit

哼,我读得太快了,如果不超过三个月,您就不想限制记录。我看不到如何通过单个查询来实现这一目标。(我会再考虑一下,但实际上看不到。)

您可以查询数据库以了解有多少记录,然后查询实际结果。

public function fetchRecent($from, $nbRecords = 50)
{
    $count = $this->createQueryBuilder('c')
        ->select('COUNT(c.id)')
        ->andWhere('c.created >= :from')->setParameter('from', $from)
        ->addOrderBy('c.created', 'desc');
    $nbNewer = $count->getQuery()->getSingleScalarResult();
    $query = $this->createQueryBuilder('q');
    if ($nbNewer<$nbRecords) {
        $query->setMaxResults($nbRecords);
    } else {
        $query->andWhere('q.created >= :from')->setParameter('from', $from);
    }
    $query->addOrderBy('q.created', 'desc');
    return $query->getQuery()->getResult();
}

相关内容

  • 没有找到相关文章

最新更新