Sorting Cakephp3-Paginate sortWhitelist不';t支持二级关联模型

Sorting Cakephp3-Paginate sortWhitelist不';t支持二级关联模型,sorting,cakephp,pagination,cakephp-3.0,Sorting,Cakephp,Pagination,Cakephp 3.0,我有一个问题,我不能使用paginate中的sortWhitelist来启用对“第二级关联模型的列”的排序功能。(它与第一级关联模型一起工作)。让我清楚地描述一下: 表格背景: 用户:id,名称 Tickets:id,code,name,price tickets折扣:id,ticket\u code,用户id,价格 门票有一个默认价格,有时还有打折票,提供更便宜的价格 希望做什么: 我正在制作Tickets的查看页面,它不仅显示Ticket本身的数据,还显示一个表 TicketDisco

我有一个问题,我不能使用paginate中的sortWhitelist来启用对“第二级关联模型的列”的排序功能。(它与第一级关联模型一起工作)。让我清楚地描述一下:

表格背景:

  • 用户
    id
    名称
  • Tickets
    id
    code
    name
    price
  • tickets折扣
    id
    ticket\u code
    用户id
    价格
门票有一个默认价格,有时还有打折票,提供更便宜的价格

希望做什么:

我正在制作
Tickets
的查看页面,它不仅显示
Ticket
本身的数据,还显示一个表

  • TicketDiscounts
    记录
    Tickets.ticket\u code=Tickets.code
    ,以及
  • Users
    记录
    TicketDiscounts.user\u id=Users.user\u id
问题:

它实际上工作得很好,直到我想为表添加一些排序函数。 我知道有一个名为
sortWhitelist
的配置键,但在这种情况下,它只支持“链接”
ticketslipses

比如:

票务-->票务折扣[确定]
票务---->票务折扣---->用户[不正常]

ticketcontroller.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']);
}
视图.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>

研究:
我无意中发现了类似的东西。我有结构
教师
->
用户
->
,我想按人的名字排序

教师控制器

public$paginate=['sortWhitelist'=>Persons.forename'];
查看


因此,简而言之,我认为您只需更改第一个和第二个排序链接,以引用字段
Users.id
Users.name