按多列获取内容顺序

时间:2014-10-16 09:47:32

标签: mysql bolt-cms

文档:https://docs.bolt.cm/content-fetching#ordering-results

我正在尝试获取一组记录并根据两个字段对它们进行排序。我创建了以下请求:

{% setcontent records = 'artists' where { gender: 'Male' } orderby 'surname, title ASC' %}

使用bolt.db作为数据库时可以正常工作,但在MySQL中却没有。我觉得我之前做过类似的事情,所以我想知道它是否与版本有关。此实现使用v1.6.5

2 个答案:

答案 0 :(得分:0)

我没有测试过这个,但MySQL的常用语法是:

order  surname ASC, title ASC

尝试将orderby字符串调整为相同的格式,看看是否能完成这项工作。

答案 1 :(得分:0)

好的,我已经快速解决了这个问题。

我所做的是稍微修改Storage.php文件。

private function getEscapedSortorder($name, $prefix = 'r')
{   
    // HACK: multiple sort columns
    if (strpos($name, ',') !== FALSE) {
        return $name;
    }
    // END HACK: multiple sort columns

    list ($name, $asc) = $this->getSortOrder($name);

    ...

在我的内容类型中,我现在可以定义sort: surname, title,它将自动执行ASC订单,或者我可以执行sort: surname DESC, title ASC或SQL将允许的任何内容。

可以轻松修改此问题以处理-surname, -title等。