#cakephp-3.0
Вопрос:
Я использую Табличное представление для сбора статистических данных и отображаю их в представлении администратора.
CREATE VIEW `returned_products_quantity` AS
SELECT `o`.`product_id` AS `product_id`,
COUNT(`d`.`id`) AS `returned_quantity`
FROM (`orders_items` `o` JOIN `discount_coupons` `d`)
WHERE ((`d`.`orders_items_id` = `o`.`id`)
AND (`d`.`discount_campaign_id` = 42)
AND (`o`.`deleted` IS NULL))
GROUP BY `o`.`product_id`;
Модельный Стол
class ReturnedProductsQuantitiesTable extends Table
{
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('returned_products_quantities');
}
public function validationDefault(Validator $validator)
{
$validator
->numeric('product_id')
->requirePresence('product_id','true')
->notEmpty('product_id');
$validator
->numeric('returned_quantity')
->requirePresence('returned_quantity', 'true')
->notEmpty('returned_quantity');
return $validator;
}
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->existsIn(['product_id'], 'Products'));
return $rules;
}
}
В ProductsController я определяю запросы и устанавливаю результат для представления
public function index()
{
$conditions = [];
if ($this->getRequest()->getQuery('manufacturer')) {
$conditions['Manufacturers.abbrevation'] = $this->getRequest()->getQuery('manufacturer');
}
if ($this->getRequest()->getQuery('created')) {
$conditions['DATE(Products.created)'] = $this->getRequest()->getQuery('created');
}
$query = $this->Products
->find('search', $this->Products->filterParams($this->getRequest()->getQueryParams()))
->find('adminIndex')
->where($conditions)
->order(['Products.id' => 'ASC']);
$this->set('products', $this->paginate($query));
}
Теперь при просмотре я определяю Пагинатор следующим образом:
<th><?= $this->Paginator->sort('returned_quantity', __('Returned')); ?></th>
Сама ссылка генерируется, как и ожидалось, и когда я нажимаю в первый раз /admin/products?sort=returned_quantityamp;direction=asc
, результаты сортируются. Затем нажмите на сгенерированные /admin/products?sort=returned_quantityamp;direction=desc
сортировки также правильно. Но теперь направление сортировки остается с «desc» и не переключается обратно на «asc».
Что могло стать причиной такого плохого поведения?