簡體   English   中英

Yii2:如何通過虛擬屬性訂購關系?

[英]Yii2: How to order a relation by virtual attribute?

我有一個班級Group ,有很多Teams ,我想按他們的分數訂購。 團隊的分數是通過迭代其游戲來計算的,因此分數不是db-field,而是虛擬的只讀屬性。

這是我的嘗試:

public function getTeams()
{
    return $this->hasMany(Team::className(), ['group' => 'id'])->orderBy(['score' => SORT_ASC]);
}

這不起作用,因為得分不是db-field。 如何通過虛擬屬性訂購關系?

您可以創建數據庫視圖,例如team_score。 視圖應包含團隊表中的所有字段和計算的字段分數(使用SQL命令計算)。 然后,您可以創建一個TeamScore模型,您可以通過字段分數輕松訂購。

缺點:這些值將是每次調用新計算的視圖,需要更多計算能力,而不是計算值直接存儲在表中。

優點:實現簡單,首先顯示具有多種關系的表,節省了大量編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM