最近,我遇到了看似簡單的任務,即在查詢構建器語句中輸出引用項目的相關計數。這里的簡化代碼:$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 關注
- 123 瀏覽
添加回答
舉報
0/150
提交
取消