【发布时间】:2013-01-06 17:56:47
【问题描述】:
由于SPHINX 返回一个 id 列表,我看不到如何使用标准对最终结果进行排序。
我有一个包含 id 的数组:
$a = array(1,2,3,4,5);
这个 id 数组是由 SPHINX 搜索引擎作为结果给出的。
我想使用这个数组并通过 id 提取所需的数据作为 PK,但我必须像这样对结果进行排序:
拥有视频和照片的用户在所有仅拥有照片的用户之前,拥有照片的用户在列表中的下一个,然后这些拥有照片的用户应按他们最近登录的时间排序,最近登录在列表顶部.在所有用户都有照片之后,其余的用户应该在那里,最近登录的用户最先。
我试过这个,没有订单字段,因为我不知道如何编写代码;
$criteria = new CDbCriteria();
$criteria->addInCondition('id', $a);
$criteria->order = "FIELD(id, " . join(',', $a) . ")";
$dataProvider = new CActiveDataProvider('user', array(
'criteria' => $criteria,
'pagination' => array(
'pageSize' => $this->pageSize,
),
));
有人试过这样的吗?或其他建议?
【问题讨论】:
标签: php sql yii sphinx criteria