web-dev-qa-db-ja.com

yii2 ActiveRecordでの計算によるOrderByの検索

データベースから説明を取得しようとしています。クエリは結果を返しますが、投票数が最も多いもののみを表示するように結果を並べたいと思います。

投票はupvoted列から減算されたdownvoted列によって計算される必要があります

$description = UnitDescription::find()
   ->where(['id_unit' => $model->id])
   ->orderBy([
      'upvoted - downvoted' => SORT_DESC //Need this line to be fixed
   ])
   ->one();

私は誰かがクエリのこの部分を書く方法を持っているかもしれないと思っていました-ありがとう

17
william

単に試してください:

$description = UnitDescription::find()
    ->where(['id_unit' => $model->id])
    ->orderBy(['(upvoted - downvoted)' => SORT_DESC])
    ->one();
29
soju