好的,所以过去几天这让我发疯了...... 我有一个像这样的DataObject:
private static $db = array(
// other properties
'active' => 'Boolean',
'sort' => 'Int' // ID of another DataObject of this type, after which it is to be displayed.
);
private static $has_one = array('Page' => 'CustomPage');
CustomPage只是扩展了Page,并且与这个DataObject有一个has_many关系 对我来说,现在的痛苦是以他们正确排序的方式获取数据。
编辑:排序值实际上是DataObject的ID,然后对此进行排序。
例如,给出以下内容:
ID sort
1 0
2 3
3 5
4 1
5 1
结果应按如下顺序排列:
ID
1
4
5
3
2
排序可以重复,因为每当我在中间添加一些东西时,我都不想为每个项目更新而烦恼。
答案 0 :(得分:2)
设置DataObject
的排序顺序的一种方法是设置$default_sort
变量:
class CustomDataObject extends DataObject {
private static $db = array(
'Active' => 'Boolean',
'SortOrder' => 'Int'
);
private static $has_one = array(
'Page' => 'CustomPage'
);
private static $default_sort = 'SortOrder ASC';
}
确保在执行此操作后调用?flush=all
以清除网站缓存。
此外,如果通过DataObject
维护自定义GridField
,我们可以使用模块通过拖放来控制排序顺序。这是一个StackOverflow答案,详细说明了如何使用以下模块之一:
Silverstripe DataObject - drag and drop ordering
答案 1 :(得分:0)
正如3dgoo所说,const char* front = "front";
const char* back = "back";
eyeballs(front);
eyeballs(back);
void eyeballs(const char* frontOrBack){
if (frontOrBack == "front") {
digitalWrite(frontEyes, LOW);}//end if
else if (frontOrBack == "back") {
digitalWrite(backEyes, LOW);}//end else*/
}
是你的朋友。当您的列$default_sort
(或sort
)不唯一时,您可以随时添加另一列来对重复项进行排序,例如
SortOrder
应该适用于您的情况。