Heim  >  Fragen und Antworten  >  Hauptteil

Wie kann ich sicherstellen, dass meine Methode nur einmal ausgeführt wird?

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粉198814372P粉198814372257 Tage vor328

Antworte allen(1)Ich werde antworten

  • P粉373990857

    P粉3739908572024-01-11 09:04:01

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

    $rating = $singleUser->getRating();

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

    !is_null($rating)
    echo $rating['rate']

    Antwort
    0
  • StornierenAntwort