2016-06-10 14 views
0

CakePHP Abfrage und so von der Steuerung:Warum wird CakePHP 3.2 Paginator nicht nach meinen Abfrageergebnissen sortieren?

$ratings = $this->Ratings->find('all')->group('manufacturer'); 
$ratings->select(['manufacturer', 
        'count' => $ratings->func()->count('*'), 
        'max' => $ratings->func()->max('psi_score'), 
        'min' => $ratings->func()->min('psi_score')]); 
$ratings = $this->paginate($ratings); 
$this->set(compact('ratings')); 
$this->set('_serialize', ['ratings']); 

Hier ist, was debug($ratings) produziert:

'items' => [ 
    (int) 0 => object(Cake\ORM\Entity) { 

     'manufacturer' => 'A10Green Technology', 
     'count' => (int) 8, 
     'max' => '7.41', 
     'min' => '6.57', 
     '[new]' => false, 
     '[accessible]' => [ 
      '*' => true 
     ], 
     '[dirty]' => [], 
     '[original]' => [], 
     '[virtual]' => [], 
     '[errors]' => [], 
     '[invalid]' => [], 
     '[repository]' => 'Ratings' 

    }, 

In der Ansicht auf manufacturer Sortierung funktioniert gut. Das ist ein originales Datenbankfeld. Die Werte count, max und min werden nicht sortiert.

Hier sind die sort fordert die Ansicht: Pagination

public $paginate = [ 
    'sortWhitelist' => [ 
     'id', 'title', 'Users.username', 'created' 
    ] 
]; 

Sonst: 3 durch Standardkuchen:

<th><?= $this->Paginator->sort('manufacturer')?></th> 
<th><?= $this->Paginator->sort('count')?></th> 
<th><?= $this->Paginator->sort('max')?></th> 
<th><?= $this->Paginator->sort('max')?></th> 
+0

http://stackoverflow.com/questions/31763413/pagination-sort-link-on-a-virtual-field-entity-property-in-cakephp-3-0 – ndm

Antwort

1

Sie müssen die Felder weiße Liste, die Sie wollen, wie in sortiert werden, damit blockiert es