删除DataObject默认排序

时间:2016-08-17 10:10:49

标签: php orm silverstripe

我有DataObject的默认排序:

class Author extends DataObject {
    private static $db = array('Name' => 'Varchar');
    private static $default_sort = 'Name ASC';
}

我希望Author::get()数据但没有排序。

所以......

Author::create(array('Name' => 'DEF'))->write();
Author::create(array('Name' => 'ABC'))->write();

这将使用排序输出 ABC 然后 DEF ,但如果排序已清除,我希望 DEF 然后 ABC

我已尝试Author::get()->sort('')Author::get()->sort(null),但两者都返回 ABC ,然后再次 DEF

注意我问的原因是我有一个复杂的查询(使用连接),这会引起问题,如果我尝试设置排序,我也会收到错误。< / p>

  

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在#OR; ORDER BY&#34; _SortColumn0&#34;附近使用正确的语法。 ASC&#39;在第1行

因此,解决方案以及我想知道的是,如何清除特定Author::get()的默认排序,同时保持DataObject上的现有默认排序?

1 个答案:

答案 0 :(得分:4)

我认为取消排序的唯一方法是操纵支持运行DataQuery时返回的DataList的{​​{1}}。

Author::get()