0

如何获得下表的结果。

猫Tbl

catId, name
11     fruit
12     vegetable

产品表

pId | catTbl_catId | name
1     11             apple
2     11             orange
3     12             slag

我想得到结果

 cat name     total count
 fruit        2
 vegetable    1

按总数排序--

如何在 cakephp 3 查询下使用按总计排序..

 $cats=$this->catTbl->find()
            ->where(['catTbl.status'=>'1','is_deleted'=>'0'])
            ->select(['name','catId','modified'])          
            ->contain([
            'prodTbl' => function($q) {
              $q->select([
                   'prodTbl.catTbl_catId',
                   'total' => $q->func()->count('prodTbl.catTbl_catId')
              ])
              ->where(['prodTbl.status'=>'1','prodTbl.is_deleted'=>'0'])
              ->group(['prodTbl.catTbl_catId']);

              return $q;
          }
          ]);
4

1 回答 1

0

我设法得到了结果

+------------+---------+
|    Cat     |  Total  |
+------------+---------+
| fruit      |    2    |
| vegetable  |    1    |
+------------+---------+

使用这个查询

$query = $this->Prod->find();

    $cats = $query->select([
        'Cat.name',
        'total' => $query->func()->count('catId')
    ])
    ->contain([
        'Cat'
    ])
    ->group([
        'catId'
    ])
    ->order([
        'total' => 'DESC'
    ])
    ->all();
于 2017-12-07T10:51:54.320 回答