cakephp分页-按类别对记录进行排序(每个记录有不同的类别)
我正在尝试对每个类别的记录进行排序,如果用户有自己喜欢的类别,则每个记录都有一个或多个类别。。如果没有,则只显示所有记录。。 例如,如果记录有食品类别,并且登录的用户碰巧选择了食品作为其兴趣之一,则显示的记录列表将进行排序,使食品类别下的记录位于列表顶部 我有cakephp分页-按类别对记录进行排序(每个记录有不同的类别),php,mysql,cakephp,pagination,Php,Mysql,Cakephp,Pagination,我正在尝试对每个类别的记录进行排序,如果用户有自己喜欢的类别,则每个记录都有一个或多个类别。。如果没有,则只显示所有记录。。 例如,如果记录有食品类别,并且登录的用户碰巧选择了食品作为其兴趣之一,则显示的记录列表将进行排序,使食品类别下的记录位于列表顶部 我有 $this->Steplist->virtualFields['in_like'] = "IF(Record.category_id IN ($interests), 0, 1)"; $order["in_like"] = '
$this->Steplist->virtualFields['in_like'] = "IF(Record.category_id IN ($interests), 0, 1)";
$order["in_like"] = 'asc';
然后
对于$this->Paginator->settings
然后
类别的int\u id
现在,不是每个记录有一个类别,而是必须将其更改为多个类别。由于站点现在已经完成,为了避免更改太多,我只需将类别id(int)更改为类别(varchar),类别id用逗号分隔。。因此,如果记录中附加了多个类别,那么它现在可以是3,5,7,而不是5
我尝试将虚拟字段条件更改为:
$this->Steplist->virtualFields['in_like'] = "IF(Record.categories IN ($interests), 0, 1)";
但结果并不正确。
如何改为这样做(cakephp 2.4.3)?这将在settigns分页上起作用
class RecipesController extends AppController {
public $components = array('Paginator');
public function list_recipes() {
$paginate = array(
'limit' => 25,
'order' => array(
'Post.title' => 'asc'
)
);
$this->Paginator->settings = $paginate;
// similar to findAll(), but fetches paged results
$data = $this->Paginator->paginate('Recipe');
$this->set('data', $data);
}
}
但通常情况下,如果您使用虚拟字段:虚拟字段的实现有一些限制。首先,不能在条件、顺序或字段数组的关联模型上使用virtualFields。这样做通常会导致SQL错误,因为ORM不会替换字段。这是因为很难估计可能找到关联模型的深度
您可以在检索数据后使用sort()或sort()仍然不明白您要做什么…我正在尝试按类别对记录进行排序,如果用户有自己喜欢的类别,则每条记录都有一个或多个类别。。如果没有,则只显示所有记录@IsaacRajaei@IsaacRajaei编辑了我的问题,介绍了我要做的事情。你在哪里把$order传递给你pagination@IsaacRajaei$order像这样传递给'order':$this->Paginator->settings=array('conditions'=>array('Record.status='=>'public'))“限额”=>10,“订单”=>$order);
class RecipesController extends AppController {
public $components = array('Paginator');
public function list_recipes() {
$paginate = array(
'limit' => 25,
'order' => array(
'Post.title' => 'asc'
)
);
$this->Paginator->settings = $paginate;
// similar to findAll(), but fetches paged results
$data = $this->Paginator->paginate('Recipe');
$this->set('data', $data);
}
}