动态更新存储库查询

Dynamically update repository queries

我在存储库中创建了一个查询。 由于通过函数发送的参数,我想更改此查询中的某些元素(如 where 条件、排序等)。

此功能有效,returns 数据:

public function dashboardIndex($offset, $limit, $order)
{
    $query = $this->createQueryBuilder('v')
    ->setFirstResult($offset)
    ->setMaxResults($limit)         
    ->getQuery()
    ->getResult()
    ;
    return $query;
}

添加动态“addOrderBy”不起作用,也没有 return 数据

public function dashboardIndex($offset, $limit, $order)
{
    $query = $this->createQueryBuilder('v');
    
    /* Sort dynamically  $order = ['column1' => 'ASC', 'column2' => DESC, ...] */
    foreach($order as $column => $direction){
        $query->addOrderBy('v.'.$column , $direction);
    }       
    /* Sort dynamically */
    
    $query->setFirstResult($offset)
    ->setMaxResults($limit)         
    ->getQuery()
    ->getResult()
    ;
    return $query;
}

“createQueryBuilder”return是一个对象,但不能在整个函数中对其进行修改吗?

明显的说法很明显:

要return查询的结果,就得return查询的结果。

因此 return $query; 不是 return 结果,而是查询。

更好:

return $query->getQuery()->getResult();