最近,我遇到了看似简单的任务,即在查询构建器语句中输出引用项目的相关计数。这里的简化代码:$data = TableRegistry::getTableLocator()->get('tableA')->find() ->select( [ 'tableA.term', 'tableA.termkey', 'count(tableA.termkey)' //my first though was this...but it does not work 'count' => TableRegistry::getTableLocator()->get('tableA')->find()->func()->count('*') //ok ], ) ->join([ .... ] ]) ->where( .... )->group( .... )->order( .... );现在,经过一些文档查找后,我终于找到了一个语法相当奇特的解决方案。TableRegistry::getTableLocator()->get('tableA')->find()->func()->count('*') //ok, works so far..but do I need this all stuff for an simple count?在查询构建器中使用计数函数真的是理想的方法吗?还有比这更好的解决方案吗?
2 回答
开心每一天1111
TA贡献1836条经验 获得超13个赞
您可以通过首先初始化查询来消除一些冗余:
$query = TableRegistry::getTableLocator()->get('tableA')->find();
$query = $query->select([
'tableA.term',
'tableA.termkey',
// $query is already a query object here, so you can call func on it directly
'count' => $query->func()->count('*')
])
慕桂英4014372
TA贡献1871条经验 获得超13个赞
让我们看看你在这里做什么:
你得到了表格定位器(需要的步骤)
你得到了桌子(需要的步骤)
您需要加载数据(需要步骤)
你需要调用一个函数(需要的步骤)
您调用该计数功能(需要步骤)
- 2 回答
- 0 关注
- 89 浏览
添加回答
举报
0/150
提交
取消