Maison > Questions et réponses > le corps du texte
J'ai une méthode dans les utilisateurs modèles
public function getRating() { $id = \Yii::$app->request->get('id'); $rating = Yii::$app->db->createCommand( "SELECT * FROM ( SELECT *, (@position:=@position+1) as rate FROM ( SELECT executor_id, SUM(rate) / COUNT(rate) as pts FROM user_replies, (SELECT @position:=0) as a GROUP BY executor_id ORDER BY pts DESC ) AS subselect ) as general WHERE executor_id = $id" )->queryOne(); return $rating; }
Et j'affiche le résultat dans la vue comme suit
getRating()['rate']; ?>
Mais des développeurs plus expérimentés m'ont dit que ma requête serait exécutée deux fois. Est-il possible de réécrire le code pour qu'il ne s'exécute qu'une seule fois ?
P粉3739908572024-01-11 09:04:01
On dirait que vous avez appelé $singleUser->getRating()
deux fois.
Vous pouvez essayer de sauvegarder les résultats dans une variable afin de ne pas appeler la base de données deux fois.
Par exemple :
$rating = $singleUser->getRating();
La valeur de cette variable peut désormais être utilisée directement. Cela évite d'accéder à nouveau à la base de données.
!is_null($rating) echo $rating['rate']