php - cakephp 与 order by 的匹配不起作用

标签 php mysql cakephp match against

我正在尝试订购我的分页结果。但它不起作用。

$this->paginate = array(
                'limit' => 15,
                'fields' => array('*', "MATCH (headline, author, short_headline, subline, teaser, text) AGAINST ('$var') AS score"),
                'conditions' =>  "MATCH(headline, author, short_headline, subline, teaser, text) AGAINST('$var' IN BOOLEAN MODE)",
                'order' => array('score' => 'desc')
            );

查询看起来像:

SELECT *, MATCH (`headline`, `author`, `short_headline`, `subline`, `teaser`, `text`) AGAINST ('herz tod') AS `score`, `Story`.`id` FROM `fates`.`stories` AS `Story` WHERE MATCH(headline, author, short_headline, subline, teaser, text) AGAINST('herz tod' IN BOOLEAN MODE) LIMIT 15

并且按分数排序消失了!我做错了什么?感谢您的帮助!

最佳答案

尝试在尝试分页之前将 score 设为 virtualField,以便使用它来对分页进行排序。 (可能还有其他方法可以让它按分数排序,但我不知道它们。)

$this->Model->virtualFields['score'] = "MATCH (headline, author, short_headline, subline, teaser, text) AGAINST ('" . Sanitize::escape($var) . "')";

我还想指出,以防万一,如果您不能假设 $var 到是值得信赖的数据,例如 $var 来自用户输入。

关于php - cakephp 与 order by 的匹配不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22310568/

相关文章:

php - Drupal 7 AJAX 通过 hook_menu 调用

python - Flaskflaskext.mysql无属性连接

php - CakePHP 3.1 patchEntity 在清洁时总是将 belongsToMany 关联标记为脏

html - 最佳实践翻译 CakePHP 3.x __ 函数

php - 如何使用 PHP 将十进制数转换为单词(货币格式)?

php - 比较哈希值以检查它是否相等

使用 wamp 服务器时 PHP 脚本不起作用

mysql - 更新时出现 Microsoft Jet OLEDB 语法错误

php - 数组更新语句清空 SQL 表中的记录。 - 更新

javascript - 将数据插入数据库。 Cakephp、AJAX、jQuery、异步