【发布时间】:2017-08-15 20:38:58
【问题描述】:
我们无法通过深度关联的数据对交易进行排序。主要是 belongsTo 和 hasOne 关联。任何需要/未在此处建立的信息将立即发布。表格:
BcTransactions:
$this->belongsTo('Seller', [
'className' => 'BcAccessCards',
'foreignKey' => 'seller',
'propertyName' => 'BcAccessCards',
]);
$this->belongsTo('Buyer', [
'className' => 'BcUsers',
'foreignKey' => 'buyer',
'propertyName' => 'BcUsers',
]);
BcAccessCards:
$this->belongsTo('BcUsers', [
'className' => 'BcUsers',
'foreignKey' => 'user',
'propertyName' => 'BcUsers'
]);
Bc用户:
$this->hasOne('BcUserInfos', [
'className' => 'BcUserInfos',
'foreignKey' => 'user_id',
'dependent' => true,
'propertyName' => 'BcUserInfos'
]);
我们能够检索每笔交易的所有相关数据:
$query = $bcTransactions->find('all', [
'conditions' => ['BcTransactions.company =' => $id],
'contain' => ['Seller', 'Seller.BcUsers', 'Seller.BcUsers.BcUserInfos', 'Buyer', 'Buyer.BcUserInfos'],
]);
查询返回完美的数据集,但在排序方面:
$this->paginate = [
'contain' => ['Seller', 'Seller.BcUsers', 'Seller.BcUsers.BcUserInfos', 'Buyer', 'Buyer.BcUserInfos'],
'sortWhitelist' => [
'id',
'Buyer.BcUserInfos.firstname',
'Seller.BcUsers.BcUserInfos.firstname',
]
];
$this->paginate($query);
例如,我们得到以下 URL:?sort=Seller.BcUsers.BcUserInfos.firstname&direction=asc,但由于错误而失败:Column not found: 1054 Unknown column 'Seller.BcUsers' in 'order clause' 我们理解错误的含义,但不知道如何修复它,如何按深度关联的数据进行排序。
【问题讨论】:
标签: php sorting cakephp pagination cakephp-3.0