Comment puis-je m'assurer que ma méthode n'est exécutée qu'une seule fois ?
P粉198814372
P粉198814372 2024-01-10 17:47:23
0
1
357

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粉198814372
P粉198814372

répondre à tous(1)
P粉373990857

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']
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!