私はオブジェクトScore()
の関数で計算されたスコアに基づいてソートしたいオブジェクトのセットPerson
を持っています。関数の結果でデータリストをソートする方法 - SilverStripe 4
ModelAdminにScore()
を簡単に表示することはできますが、dbフィールドではないので、そのフィールドでソートすることはできません。スコアは毎日dbの他のいくつかのフィールドに基づいて変化するので、それ自体を格納するのに適したものではありません。
filterByCallback()
の類義語であるsortByCallback()
のような機能があると思っていましたが、それが存在しないようです。
ModelAdmin gridFieldに追加する必要はありませんが、レポートに使用したいと思います。他の人がこの問題をどうやって解決したのか?
乾杯
メモリ内でこの種の計算を行うことは、実際には悪いことです。 'Score()'計算に寄与するすべてのものを取って、それらのうちの1つが変更されるたびに 'Person'が新しいネイティブ' Score' dbフィールドで書き込まれるようにすることは、現実的でしょうか?それが計算された値であるからといって、データとして保存することはできません。最悪の場合は、それをcronタスクなどに渡します。 – UncleCheese
本当に、私はメモリの面については考えていませんでした。毎日更新されるか、管理者の値が変更されたときに更新されます。ですから、真夜中や変更の直後にcronジョブを実行する方がよいでしょう。基本的には、待機していた日数と優先度を調べ、それに基づいてスコアを割り当てる待機リストです。 – howardgrigg