php - 动态更新存储库查询
问题描述
我在存储库中创建了一个查询。由于通过函数发送的参数,我想更改此查询中的一些元素(例如 where 条件、排序等)。
此函数有效并返回数据:
public function dashboardIndex($offset, $limit, $order)
{
$query = $this->createQueryBuilder('v')
->setFirstResult($offset)
->setMaxResults($limit)
->getQuery()
->getResult()
;
return $query;
}
添加动态“addOrderBy”不起作用并且它不返回数据
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 $query;
不返回结果,而是返回查询。
更好的:
return $query->getQuery()->getResult();
推荐阅读
- asp.net-core - 如何在 IIS Web 服务器上授予对 Asp.net Core ContentRoot 路径的写访问权限
- xml - 如何使用 XPath 提取部分文本?
- jmeter - 如何将 jmeter 中的数组值作为 CSV 数据配置传递?
- java - 嵌套对象的不同注释实现
- rtos - 使用 Shell 命令执行 VxWorks 653 应用程序
- c# - System.InvalidOperationException: '对象当前正在其他地方使用。'
- javascript - 如何使用 React 使用 axios 和使用 aws-sdk 预签名将文件上传到 S3 存储桶?
- json - 为多个目标主机创建 ansible 清单
- c++ - 以文件为参数的 C++ .exe
- azure-devops - 通过 REST API 将任务作为子项添加到故事中