【发布时间】:2016-03-16 21:50:08
【问题描述】:
我有一个问题,我不能在分页中使用 sortWhitelist 来启用对“第二级关联模型的列的排序功能。(它适用于第一级关联模型)。让我清楚地描述一下:
表格背景:
-
Users:id,name -
Tickets:id,code,name,price -
TicketsDiscounts:id,ticket_code,user_id,price
门票有默认价格,有时还有打折门票,提供更便宜的价格。
想做的事:
我正在制作Tickets的视图页面,它不仅显示Ticket本身的数据,还显示了一个表格
-
TicketDiscounts记录 whereTickets.ticket_code = Tickets.code和 -
Users记录其中TicketDiscounts.user_id = Users.user_id。
问题:
它实际上工作正常,直到我想为表格添加一些排序功能。
我知道有一个名为sortWhitelist 的配置键,但在这种情况下它只支持“链接”TicketsDiscounts。
喜欢:
门票---->门票折扣 [OK]
Tickets---->TicketsDiscounts---->Users [NOT OK]
在TicketsController.php:
public function view($id = null) {
$ticket = $this->Ticket->get($id);
$setting = [
"sortWhitelist" => [
"Users.id", "Users.name", "TicketsDiscounts.price"
]
];
$paginate_discountsowners = $this->paginate(
$this->Tickets->TicketsDiscounts
->findByTicketsCode($ticket->code)
->contain("Users"), $setting
);
$this->set('paginate_discountsowners', $paginate_discountsowners);
$this->set('_serialize', ['paginate_discountsowners']);
}
在view.ctp:
<td><?= $this->Paginator->sort("id", "User ID", ["model" => "Users"]) ?></td>
<td><?= $this->Paginator->sort("name", "User Name", ["model" => "Users"]) ?></td>
<td><?= $this->Paginator->sort("price", "Discount Price", ["model" => "TicketsDiscounts"]) ?></td>
研究: CakePHP - paginate and sort 2nd level association
Pagination Sort in Cakephp 3.x
感谢您阅读我的帖子,欢迎提出任何想法。
【问题讨论】:
标签: sorting cakephp pagination cakephp-3.0