web-dev-qa-db-fra.com

yii2 ActiveRecord Rechercher OrderBy avec calcul

Essayer de récupérer une description de ma base de données. La requête renvoie le résultat, mais je voudrais ordonner que le résultat affiche uniquement celui avec le plus grand vote.

Le vote doit être calculé par la colonne upvoted soustraite de la colonne downvoted

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

J'espérais que quelqu'un aurait un moyen d'écrire cette partie de la requête - Merci

17
william

Vous devriez simplement essayer:

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