【发布时间】:2014-04-14 17:31:12
【问题描述】:
我正在尝试按类别对记录进行排序,如果用户有他喜欢的类别,则每条记录都有一个或多个类别。如果没有,则只显示所有记录。 例如,如果一条记录具有食品类别,并且登录的用户碰巧选择了食品作为他的兴趣之一,那么显示的记录列表将被排序,其中食品类别下的记录位于列表顶部。..
我有
$this->Steplist->virtualFields['in_like'] = "IF(Record.category_id IN ($interests), 0, 1)";
$order["in_like"] = 'asc';
然后
'order' => $order
对于$this->Paginator->设置
那么 category_id 的 int
现在,不是每条记录都有 1 个类别,而是必须更改为多个类别。为避免由于站点现已完成而发生如此大的变化,我只需将 category_id (int) 更改为 categories (varchar) ,其中类别 ID 用逗号分隔.. 所以而不是例如 5,如果记录附加了多个类别,现在可以是 3,5,7..
我尝试将虚拟字段条件更改为:
$this->Steplist->virtualFields['in_like'] = "IF(Record.categories IN ($interests), 0, 1)";
但结果不正确。 我该怎么做(cakephp 2.4.3)?
【问题讨论】:
-
还是不明白你要做什么...
-
我正在尝试按类别对记录进行排序,如果用户有他喜欢的类别,每条记录都有一个或多个类别。如果没有,则只显示所有记录。@IsaacRajaei
-
@IsaacRajaei 编辑了我的问题,介绍了我正在尝试做的事情..
-
你在哪里通过你的分页 $order
-
@IsaacRajaei $order 像这样传递给 'order' : $this->Paginator->settings = array( 'conditions' => array('Record.status =' => 'public' ), 'limit' => 10, 'order' => $order );
标签: php mysql cakephp pagination