【发布时间】:2017-12-05 23:06:00
【问题描述】:
我有一组对象Person,我想根据对象Score() 上的函数计算的分数对其进行排序。
虽然我可以在 ModelAdmin 中轻松显示 Score(),但我无法按该字段排序,因为它不是 db 字段。分数每天都会根据数据库中的其他一些字段而变化,因此它不适合存储自己。
我怀疑会有一个与filterByCallback() 等效的函数,例如sortByCallback(),但我似乎找不到那个存在。
我不需要将它添加到 ModelAdmin 网格字段中,但我想在报告中使用它。其他人是如何解决这个问题的?
干杯
【问题讨论】:
-
在内存中进行这些计算是非常糟糕的做法。每次这些事情发生变化时,将所有有助于
Score()计算的东西都纳入并确保使用新的原生Scoredb 字段编写Person对您来说有多现实?仅仅因为它是一个计算值并不意味着它不能存储为数据。最坏的情况,你把它交给一个 cron 任务或其他东西。 -
是的,我没有考虑过内存方面的问题——它会每天更新,或者在管理员中更改值时更新。所以是的,可能最好在午夜之后运行一个 cron 作业并进行任何更改。基本上是一个等待名单,查看他们已经等待了多少天以及他们的优先级,并据此分配分数。
标签: sorting silverstripe silverstripe-4