0

So erhalten Sie das Ergebnis der folgenden Tabellen.Wie wird nach den Ergebnissen der Aggregatfunktion sortiert?

catTbl

catId, name 
11  fruit 
12  vegetable 

prodTbl

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

ich für

cat name  total count 
fruit  2 
vegetable 1 

Auftrag von mit insgesamt count--

führen zu wollen

Wie bestellen unter cakephp 3 Abfrage von insgesamt verwenden ..

$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; 
      } 
      ]); 

Antwort

0

ich es geschafft, die Ergebnisse

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

mit dieser Abfrage

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

    $cats = $query->select([ 
     'Cat.name', 
     'total' => $query->func()->count('catId') 
    ]) 
    ->contain([ 
     'Cat' 
    ]) 
    ->group([ 
     'catId' 
    ]) 
    ->order([ 
     'total' => 'DESC' 
    ]) 
    ->all(); 
zu erhalten
Verwandte Themen