select ca.id,ca.name,(select count(category_id) from faq_content WHERE category_id = ca.id group by ca.id,ca.name,category_id)as click from faq_categories as ca;
TeraTarmはテスト済み。
上記のクエリをcakePHP3のクエリビルドに則り書きたい。
controller一部抜粋
1use Cake\ORM\TableRegistry; 2 3class *****Controller extends AppController 4{ 5 public function index() 6 { 7 // テーブル呼び出し 8 $this->Category = TableRegistry::get('Category'); 9 $this->Content = TableRegistry::get('Content'); 10 11 // クエリ 12 $subquery = $this->Content 13 ->find() 14 ->select(count('category_id')) 15 ->where(['category_id' => 'cat.id']) 16 ->group(['cat.id','cat.name','category_id']); 17 18 $query = $this->FaqCategories 19 ->find() 20 ->select('id', 'name',$subquery) <-select句 21 ->from(['category' => 'cat']) 22 ->all(); 23 24 $this->set(compact('query')); 25 } 26}
catgoryテーブルには id,name がある。
contentテーブルには id,name,category_id(categoryテーブルのidと紐づくid)がある。