如何解决CakePHP LEFT JOIN 排序问题
我正在使用 cakePhp 2.x 版本,以下是我的数据网格视图和控制器,我希望区域和框都按用户排序。框可以排序,但是区域优先排序是有效的,然后当点击排序时,页面刷新但不排序。可能是什么原因?
<table class="index">
<thead>
<tr>
<th><?php echo $this->Paginator->sort('A.title','Area')?></th>
<th><?php echo $this->Paginator->sort('B.title','Boxes')?></th>
<th>Internal</th>
<th>External</th>
</tr>
</thead>
$this->paginate['contain'] = array();
$this->paginate['joins'] = array(
array(
'table' => 'a_table','alias' => 'A','type' => 'LEFT','conditions' => array(
'A.key = B.id','A.status' => 'Active'
)
)
);
$conditions = array();
$this->paginate['fields'] = array('B.*','A.title');
$this->paginate['order'] = array('A.title','B.title');
if(!empty($this->request->data['SignalBox']))
{
if($this->request->data['SignalBox']['box'])
$conditions['B.title LIKE'] = '%'.$this->request->data['SignalBox']['box'].'%';
if($this->request->data['SignalBox']['area'])
$conditions['A.title'] = $this->request->data['SignalBox']['area'];
}
if($conditions)
$this->paginate['conditions'] = $conditions;
$data = $this->paginate('B');
$this->set('data',$data);
解决方法
最终的解决方案是,更改模型 根据提交的排序列,
$model ='A';
if($this->request->param('named.sort')){
$submittedModel = explode('.',$this->request->param('named.sort'));
$model =$submittedModel [0];
}
然后更改 JOIN 查询并
$data = $this->paginate('B');
if(A)
{
A JOIN query
}
else
{
B JOIN query
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。