我的虚拟场属性模型,在beforeFind()中生成,称为“距离”,可以工作。但是,我无法按它排序。我目前将此作为搜索表单的一部分:
echo $this->Form->input('sort', array(
'options' => Hash::get($predefined, 'sort'), // List of options
));
它为URL添加了排序,它适用于所有普通字段,但不适用于虚拟字段距离。我应该以不同的方式实施吗?据我所知,虚拟字段应该与分页一起正常工作。
编辑:如果我实施了分页错误......
我设置了默认值:
public $paginate = array(
'limit' => 25,
'order' => array(
'Properties.id' => 'asc'
)
);
建立$条件后:
$this->Paginator->settings = $this->paginate;
$data = $this->Paginator->paginate('Property', $conditions);
$this->set('properties', $data);
以上工作可以很好地改变顺序,甚至可以直接在URL中编辑/排序:fieldname /,但不能使用虚拟字段'distance'。我也试过添加,但没有成功:
$this->paginate['order'] = array($value); //Value is the value for 'sort' named parameter
答案 0 :(得分:2)
这部分信息:
我的虚拟字段属性模型,在beforeFind(),
中生成
似乎是个问题。
需要在调用Paginate()之前定义虚拟字段,以便分页器知道构建“排序”标准。
分页调用后,beforeFind()
调用发生,因此您的虚拟字段尚未定义。在分页调用正上方移动虚拟字段的定义应解决此问题。