Wie kann ich sicherstellen, dass meine Methode nur einmal ausgeführt wird?
P粉198814372
P粉198814372 2024-01-10 17:47:23
0
1
326

Ich habe eine Methode im Modell Benutzer

    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;
    }

Und das Ergebnis gebe ich in der Ansicht wie folgt aus

getRating()['rate']; ?>

Aber erfahrenere Entwickler sagten mir, dass meine Abfrage zweimal ausgeführt würde. Ist es möglich, den Code so umzuschreiben, dass er nur einmal ausgeführt wird?

P粉198814372
P粉198814372

Antworte allen(1)
P粉373990857

您似乎两次调用了$singleUser->getRating()。 您可以尝试将结果保存在一个变量中,这样您就不会两次调用数据库。 例如:

$rating = $singleUser->getRating();

现在可以直接使用该变量的值。这样可以避免再次访问数据库。

!is_null($rating)
echo $rating['rate']
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!