最近,我遇到了看似簡(jiǎn)單的任務(wù),即在查詢構(gòu)建器語(yǔ)句中輸出引用項(xiàng)目的相關(guān)計(jì)數(shù)。這里的簡(jiǎn)化代碼:$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( .... );現(xiàn)在,經(jīng)過(guò)一些文檔查找后,我終于找到了一個(gè)語(yǔ)法相當(dāng)奇特的解決方案。TableRegistry::getTableLocator()->get('tableA')->find()->func()->count('*') //ok, works so far..but do I need this all stuff for an simple count?在查詢構(gòu)建器中使用計(jì)數(shù)函數(shù)真的是理想的方法嗎?還有比這更好的解決方案嗎?
2 回答

開(kāi)心每一天1111
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
您可以通過(guò)首先初始化查詢來(lái)消除一些冗余:
$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貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
讓我們看看你在這里做什么:
你得到了表格定位器(需要的步驟)
你得到了桌子(需要的步驟)
您需要加載數(shù)據(jù)(需要步驟)
你需要調(diào)用一個(gè)函數(shù)(需要的步驟)
您調(diào)用該計(jì)數(shù)功能(需要步驟)
- 2 回答
- 0 關(guān)注
- 120 瀏覽
添加回答
舉報(bào)
0/150
提交
取消