1
私はクラスGroup
を持っていますが、それはたくさんあるTeams
であり、彼らのスコアで注文したいと思います。チームの得点はゲームを反復して計算されるので、スコアはdbフィールドではなく、仮想の読み取り専用属性です。Yii2:仮想属性で関係を並べる方法は?
これは私の試みです:
public function getTeams()
{
return $this->hasMany(Team::className(), ['group' => 'id'])->orderBy(['score' => SORT_ASC]);
}
がは、DB-フィールドではありませんスコアとしてこれは、動作しません。リレーションを仮想属性でどのように並べ替えることができますか?
クエリでこのフィールドを使用する必要があるため、このフィールドをdbに追加することはできますか?私はそれが不可能だと思うので、ソートされていないデータを取得し、後でphpソート関数を使ってソートすることができます。 – StalkAlex
関連モデルと検索モデルコード – scaisEdge
パフォーマンスを考慮して、計算後にスコアをデータベースに保存する必要があります。チームの「afterSave()」メソッド、または他の必要な場所でスコアを計算することができます。 –