Heim  >  Artikel  >  php教程  >  Detaillierte Erläuterung der Beziehungsdaten-Korrelationsabfrage und der Verwendung statistischer Funktionen in Yii

Detaillierte Erläuterung der Beziehungsdaten-Korrelationsabfrage und der Verwendung statistischer Funktionen in Yii

高洛峰
高洛峰Original
2016-12-30 16:15:091287Durchsuche

Das Beispiel in diesem Artikel beschreibt die Verwendung der Korrelationsabfrage für Beziehungsdaten und der statistischen Funktion in Yii. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Verwandte Abfrage, Yii unterstützt auch sogenannte statistische Abfragen (oder aggregierte Abfragen). Dabei handelt es sich um das Abrufen aggregierter Informationen zu zugehörigen Objekten, wie z. B. die Anzahl der Kommentare für jeden Beitrag, die durchschnittliche Bewertung jedes Produkts usw. Statistische Abfragen werden nur für Objekte durchgeführt, die mit HAS_MANY (z. B. ein Beitrag hat viele Kommentare) oder MANY_MANY (z. B. gehört ein Beitrag zu vielen Kategorien und eine Kategorie hat viele Beiträge) verknüpft sind.

Das Durchführen statistischer Abfragen ist der zuvor beschriebenen Korrelationsabfrage sehr ähnlich. Zuerst müssen wir die statistische Abfrage in der Relations()-Methode von CActiveRecord deklarieren.

class Post extends CActiveRecord
{
  public function relations()
  {
    return array(
      'commentCount'=>array(self::STAT, 'Comment', 'post_id'),
      'categoryCount'=>array(self::STAT, 'Category', 'post_category(post_id,category_id)'),
    );
  }
}

Verwandter Abfrage-Namespace

Verwandte Abfragen können auch mit Namespaces ausgeführt werden. Es gibt zwei Formen. In der ersten Form wird der Namespace auf das Hauptmodell angewendet. In der zweiten Form werden Namespaces auf relationale Modelle angewendet.

Der folgende Code zeigt, wie ein Namespace auf das Hauptmodell angewendet wird.

$posts=Post::model()->published()->recently()->with('comments')->findAll();

Dies ist einer nicht-assoziativen Abfrage sehr ähnlich. Der einzige Unterschied besteht darin, dass wir den with()-Aufruf nach dem Namespace verwenden. Diese Abfrage sollte kürzlich veröffentlichte Beiträge und deren Kommentare zurückgeben.

Der folgende Code zeigt, wie ein Namespace auf ein zugeordnetes Modell angewendet wird.

$posts=Post::model()->with('comments:recently:approved')->findAll();

Die obige Abfrage gibt alle Beiträge und ihre moderierten Kommentare zurück. Beachten Sie, dass sich Kommentare auf den Assoziationsnamen beziehen, während sich „Curly“ und „Approved“ auf den in der Modellklasse „Comment“ deklarierten Namespace beziehen. Assoziationsnamen und Namespaces sollten durch Doppelpunkte getrennt werden. Der Namespace


kann auch in der Option „with“ der in CActiveRecord::relations() deklarierten Assoziationsregeln angegeben werden. Wenn wir im folgenden Beispiel auf $user->posts zugreifen, werden alle moderierten Kommentare für diesen Beitrag zurückgegeben.

class User extends CActiveRecord
{
  public function relations()
  {
    return array(
      'posts'=>array(self::HAS_MANY, 'Post', 'author_id', 'with'=>'comments:approved'),
    );
  }
}

Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf dem Yii-Framework hilfreich sein wird.

Ausführlichere Erläuterungen zur Korrelationsabfrage von Beziehungsdaten und zur Verwendung statistischer Funktionen in Yii finden Sie auf der chinesischen PHP-Website für verwandte Artikel!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn