У меня возникла проблема с проектом, мне нужно дублировать некоторые строки, но не в базе данных, мне нужно сделать это после выполнения запроса select, я попытался сделать код в метод afterFind модели, но я думаю, что разбиение на страницы действительно работает после того, как я прав? поэтому, когда я пытаюсь изменить массив, содержащий мой результат заказ потерян и никогда не работает снова ... мой код что-то вроде этого ...Cakephp afterFind и порядок разбивки на страницы не работает
public function afterFind($results) {
foreach ($results as $rKey = $result) {
if (count ($result['Address']) 1) {
foreach ($result['Address'] as $address) {
$res[] = array('Client' => $result['Client'],
'Address' => $address
);
unset($results[$rKey]);
}
}
}
return $res;
}
Таким образом, это дает проблемы с нумерацией страниц .. .Кто-нибудь может мне помочь?? Спасибо ...
ОБНОВЛЕНО
В модели:
$ порядка общественного = массив ('Cliente.is_anunciante' => 'DESC', 'Cliente.nome_fantasia' => ' ASC ');
public function paginate(
$conditions, $fields, $order, $limit, $page = 1,
$recursive = null, $extra = array()
) {
$results = $this->getResults($conditions, $fields, $order, $limit, $page, $recursive, $extra);
return $results;
}
public function paginateCount($conditions = null, $recursive = 0, $extra = array()) {
$results = $this->getResults($conditions, $recursive, $extra, null, null, null, null);
return count($results);
}
public function getResults($conditions, $fields, $order, $limit, $page, $recursive, $extra) {
if(!empty($page))
$results = $this->find('all', compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive', 'group'));
if(empty($page))
$results = $this->find('all', compact('conditions', 'recursive', 'extra'));
foreach ($results as $rKey => $result) {
if(!empty($result['Endereco']) && count($result['Endereco']) > 1 && $result['Cliente']['is_anunciante'] != 2){
foreach ($result['Endereco'] as $key => $endereco) {
$results[] = array(
'Cliente' => $result['Cliente'],
'Endereco' => array(
$endereco
)
);
}
unset($results[$rKey]);
}
}
return $results;
}
В контроллере внутри действия:
$this->paginate = array(
'limit' => 20,
'order' => array(
'is_anunciante' => 'DESC',
'nome_fantasia' => 'ASC'
)
);
его потому, что метод paginateCount не знает, сколько строк вы добавляете. Попробуйте переопределить их в paginate и paginateCount. –
где '$ limit', если страница пуста? –