使用分页器时如何对包含的关联中的字段进行排序?
How to sort on fields from contained associations when using the paginator?
如何使用CakePHP 对分页查询进行分页?数据没问题,但排序链接不工作....
在我的控制器中:
$this->paginate = [
'contain' => ['Slaves.Devices','Measurements','AlarmTypes.FunctionTypes.Units'],
'maxLimit'=>50
];
$alarms=$this->AlarmGenerates->find()
->select([
'Slaves.name',
'Devices.name',
'AlarmTypes.nazwa',
'FunctionTypes.name',
'Measurements.value',
'AlarmTypes.max_value',
'AlarmTypes.min_value',
'Units.name',
'AlarmGenerates.created'
])
->contain(['Slaves.Devices','Measurements','AlarmTypes.FunctionTypes.Units']);
$alarmyAll=$this->paginate($alarms);
在模板中:
<th><?=$this->Paginator->sort('slave.device.name','Obiekt')?></th>
<th><?=$this->Paginator->sort('alarm_type.nazwa','Nazwa Alarmu')?></th>
<th><?=$this->Paginator->sort('name',null,['model'=>'FunctionTypes'])?></th>
<th><?=$this->Paginator->sort('measurement.value','Wartość',['model'=>'Measurement'])?></th>
<th><?=$this->Paginator->sort('alarm_type.max_value','Dopuszczalny przedzial')?></th>
<th><?=$this->Paginator->sort('created','Czas wystąpienia')?></th>
请帮忙...
您可以将您希望能够作为排序依据的列添加到分页的白名单中:-
public $paginate = [
'contain' => ['Slaves.Devices', 'Measurements', 'AlarmTypes.FunctionTypes.Units'],
'maxLimit' => 50,
'sortWhitelist' => [
'slave.device.name',
'alarm_type.nazwa',
'name',
'measurement.value',
'alarm_type.max_value',
'created'
]
];
如果您需要能够对关联数据中的任何列进行排序,那么您需要在 sortWhitelist
中定义列,如 official docs 中所述。
This option is required when you want to sort on any associated data, or computed fields that may be part of your pagination query
如何使用CakePHP 对分页查询进行分页?数据没问题,但排序链接不工作....
在我的控制器中:
$this->paginate = [
'contain' => ['Slaves.Devices','Measurements','AlarmTypes.FunctionTypes.Units'],
'maxLimit'=>50
];
$alarms=$this->AlarmGenerates->find()
->select([
'Slaves.name',
'Devices.name',
'AlarmTypes.nazwa',
'FunctionTypes.name',
'Measurements.value',
'AlarmTypes.max_value',
'AlarmTypes.min_value',
'Units.name',
'AlarmGenerates.created'
])
->contain(['Slaves.Devices','Measurements','AlarmTypes.FunctionTypes.Units']);
$alarmyAll=$this->paginate($alarms);
在模板中:
<th><?=$this->Paginator->sort('slave.device.name','Obiekt')?></th>
<th><?=$this->Paginator->sort('alarm_type.nazwa','Nazwa Alarmu')?></th>
<th><?=$this->Paginator->sort('name',null,['model'=>'FunctionTypes'])?></th>
<th><?=$this->Paginator->sort('measurement.value','Wartość',['model'=>'Measurement'])?></th>
<th><?=$this->Paginator->sort('alarm_type.max_value','Dopuszczalny przedzial')?></th>
<th><?=$this->Paginator->sort('created','Czas wystąpienia')?></th>
请帮忙...
您可以将您希望能够作为排序依据的列添加到分页的白名单中:-
public $paginate = [
'contain' => ['Slaves.Devices', 'Measurements', 'AlarmTypes.FunctionTypes.Units'],
'maxLimit' => 50,
'sortWhitelist' => [
'slave.device.name',
'alarm_type.nazwa',
'name',
'measurement.value',
'alarm_type.max_value',
'created'
]
];
如果您需要能够对关联数据中的任何列进行排序,那么您需要在 sortWhitelist
中定义列,如 official docs 中所述。
This option is required when you want to sort on any associated data, or computed fields that may be part of your pagination query