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?
我认为取消设置排序的唯一方法是操纵DataQuery运行DataList时返回的基础Author::get()。
$dq = Author::get()->dataQuery();
$dq->sort(null, null, true);
$authors = Author::get()->setDataQuery($dq);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |