亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

CakePHP Querybuilder 和計數語法

CakePHP Querybuilder 和計數語法

PHP
紅顏莎娜 2022-10-28 14:53:05
最近,我遇到了看似簡單的任務,即在查詢構建器語句中輸出引用項目的相關計數。這里的簡化代碼:$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('*')

])


查看完整回答
反對 回復 2022-10-28
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

讓我們看看你在這里做什么:

  • 你得到了表格定位器(需要的步驟)

  • 你得到了桌子(需要的步驟)

  • 您需要加載數據(需要步驟)

  • 你需要調用一個函數(需要的步驟)

  • 您調用該計數功能(需要步驟)


查看完整回答
反對 回復 2022-10-28
  • 2 回答
  • 0 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號