Maison > php教程 > PHP开发 > le corps du texte

Explication détaillée de la requête de corrélation des données de relations et de l'utilisation des fonctions statistiques dans Yii

高洛峰
Libérer: 2016-12-30 16:15:09
original
1309 Les gens l'ont consulté

L'exemple de cet article décrit l'utilisation de la requête de corrélation de données relationnelles et de la fonction statistique dans Yii. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Requête associée, Yii prend également en charge ce que l'on appelle les requêtes statistiques (ou requêtes agrégées). Il s'agit de récupérer des informations agrégées sur les objets associés, comme le nombre de commentaires pour chaque publication, la note moyenne de chaque produit, etc. Les requêtes statistiques ne sont effectuées que sur les objets associés HAS_MANY (par exemple, une publication contient de nombreux commentaires) ou MANY_MANY (par exemple, une publication appartient à plusieurs catégories et une catégorie contient de nombreuses publications).

L'exécution de requêtes statistiques est très similaire à la requête de corrélation décrite précédemment. Nous devons d’abord déclarer la requête statistique dans la méthode relations() de CActiveRecord.

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)'),
    );
  }
}
Copier après la connexion

Espace de noms de requêtes associées

Les requêtes associées peuvent également être exécutées avec des espaces de noms. Il existe deux formes. Dans la première forme, l'espace de noms est appliqué au modèle principal. Dans la seconde forme, les espaces de noms sont appliqués aux modèles relationnels.

Le code suivant montre comment appliquer un espace de noms au modèle principal.

$posts=Post::model()->published()->recently()->with('comments')->findAll();
Copier après la connexion

Ceci est très similaire à une requête non associative. La seule différence est que nous utilisons l'appel with() après l'espace de noms. Cette requête doit renvoyer les articles récemment publiés et leurs commentaires.

Le code suivant montre comment appliquer un espace de noms à un modèle associé.

$posts=Post::model()->with('comments:recently:approved')->findAll();
Copier après la connexion

La requête ci-dessus renverra tous les messages et leurs commentaires modérés. Notez que les commentaires font référence au nom de l'association, tandis que les termes récemment et approuvés font référence à l'espace de noms déclaré dans la classe de modèle Comment. Les noms d'association et les espaces de noms doivent être séparés par des deux-points. L'espace de noms


peut également être spécifié dans l'option with des règles d'association déclarées dans CActiveRecord::relations(). Dans l'exemple ci-dessous, si nous accédons à $user->posts, tous les commentaires modérés pour cette publication seront renvoyés.

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

J'espère que cet article sera utile à la conception de programmes PHP basés sur le framework Yii.

Pour des explications plus détaillées sur la requête de corrélation de données relationnelles et l'utilisation des fonctions statistiques dans Yii, veuillez prêter attention au site Web PHP chinois pour les articles connexes !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
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!