删除DataObject默认排序

Bar*_*rry 6 php orm silverstripe

我有一个DataObject默认排序:

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

我想要Author::get()数据,但没有任何排序.

所以......

Author::create(array('Name' => 'DEF'))->write();
Author::create(array('Name' => 'ABC'))->write();
Run Code Online (Sandbox Code Playgroud)

这将使用排序输出ABC然后输出DEF,但如果排序被清除,我会期望DEF然后是ABC.

我已经尝试了Author::get()->sort(''),Author::get()->sort(null)但两个人再次返回ABC然后返回DEF.

注意我问的原因是我有一个复杂的查询(使用连接),这导致一个问题,如果我尝试设置排序,我会收到错误.

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

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

Dan*_*sby 5

我认为取消设置排序的唯一方法是操纵DataQuery运行DataList时返回的基础Author::get()

$dq = Author::get()->dataQuery();
$dq->sort(null, null, true);
$authors = Author::get()->setDataQuery($dq);
Run Code Online (Sandbox Code Playgroud)