我有一个带有name和release_date属性的Movie模型,以及以下的ActiveAdmin代码
ActiveAdmin.register Promotion do
index do
actions
column :name
column :release_date, sortable: :release_date
end
end
当我按release_date desc排序时,没有日期的条目会出现在顶部。我更喜欢这些条目总是在底部,无论排序顺序如何。在排序列时是否有任何方法指定比较函数?
答案 0 :(得分:4)
我认为必须添加一个带有计数缓存的显式列来解决这个问题,这对于所需要的东西来说太过分了。为什么不在控制器中更新[
'class' => 'kartik\grid\ActionColumn',
'template' => '{view} {update} {delete} {myaction}', // <-- your custom action's name
'buttons' => [
'myaction' => function($url, $model, $key) {
return Html::a('My action icon', [''my action url];
}
]
...
]
查询以选择额外的列?如果它在范围内(例如当前查询),您可以通过DSL访问它。
#scoped_collection
答案 1 :(得分:1)
我建议重新定义你的问题。
使用ActiveAdmin很难达到您的要求。因为ActiveAdmin的order clause非常严格:
clause =~ /^([\w\_\.]+)(->'\w+')?_(desc|asc)$/
因此,您需要重新定义ActiveAdmin::OrderClause
类以接受NULL LAST
或数据库系统支持的任何内容,或者只接受ActiveAdmin的工作方式。