Maison cadre php YII Relations de modèle dans le framework Yii : implémentation de l'association de données

Relations de modèle dans le framework Yii : implémentation de l'association de données

Jun 21, 2023 am 10:10 AM
yii 数据关联 模型关系

Dans le framework Yii, la relation de modèle est un concept très important, utilisé pour réaliser une association de données entre plusieurs tables de données. En définissant des relations d'association, des données associées peuvent être obtenues directement lors de l'interrogation de données, ce qui réduit considérablement la complexité de l'interrogation et améliore l'efficacité de l'interrogation de données. Cet article présentera en détail les relations du modèle dans le framework Yii, notamment comment définir des relations, différents types de relations et comment utiliser les relations pour interroger des données.

1. Définissez la relation d'association

Dans le framework Yii, vous pouvez réaliser une association de données entre des tables de données en définissant la relation d'association dans la classe modèle. Plus précisément, une ou plusieurs méthodes publiques sont définies dans la classe model. Ces méthodes décrivent l'association entre la table de données et d'autres tables de données en appelant une série de méthodes d'association fournies par le framework Yii. Voici un exemple simple :

class Order extends ActiveRecord
{
    public function getCustomer()
    {
        return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
    }
}
Copier après la connexion
Copier après la connexion

Dans l'exemple ci-dessus, nous avons défini une méthode d'association getCustomer() pour décrire l'association entre la table de commande (Commande) et la relation table client (Client). Plus précisément, nous avons utilisé la méthode hasOne fournie par le framework Yii, qui représente une relation unidirectionnelle, c'est-à-dire qu'il n'y a qu'un seul client pour une commande. Parmi eux, le premier paramètre spécifie le nom de la classe de modèle associée et le deuxième paramètre spécifie la relation correspondante entre la clé étrangère associée et la clé primaire. Dans cet exemple, le champ customer_id de la table des commandes correspond au champ id de la table des clients.

2. Différents types d'associations

En plus de la méthode hasOne, le framework Yii fournit également plusieurs autres types d'associations pour mettre en œuvre différentes méthodes d'association de données. Voici plusieurs types couramment utilisés :

  1. Association un-à-plusieurs (hasMany)

L'association un-à-plusieurs signifie qu'un La classe modèle est associée à plusieurs classes modèle du même type. Dans la méthode d'association, il peut être défini à l'aide de la méthode hasMany.

class Order extends ActiveRecord
{
    public function getOrderItems()
    {
        return $this->hasMany(OrderItem::className(), ['order_id' => 'id']);
    }
}
Copier après la connexion

Dans le code ci-dessus, nous spécifions l'association entre plusieurs classes de modèle OrderItem dans une classe de modèle Order, qui est implémentée via la méthode hasMany. Parmi eux, le premier paramètre spécifie le nom de la classe de modèle associée et le deuxième paramètre spécifie la relation correspondante entre la clé étrangère associée et la clé primaire. Dans cet exemple, le champ id de la table des commandes correspond au champ order_id de la table des éléments de commande.

  1. Il existe des associations un-à-plusieurs avec plusieurs associations (hasMany via)

Ce type d'association représente l'existence entre deux classes modèles Table d'association intermédiaire, et chaque classe de modèle possède plusieurs enregistrements associés à la table d'association intermédiaire. Dans la méthode d'association, il peut être défini à l'aide de la méthode hasMany.

class Order extends ActiveRecord
{
    public function getOrderItems()
    {
        return $this->hasMany(OrderItem::className(), ['order_id' => 'id']);
    }

    public function getProducts()
    {
        return $this->hasMany(Product::className(), ['id' => 'product_id'])
            ->via('orderItems');
    }
}
Copier après la connexion

Dans le code ci-dessus, nous spécifions la relation entre plusieurs classes de modèle Product dans une classe de modèle Order, qui est implémentée via la méthode hasMany. Parmi eux, le premier paramètre spécifie le nom de la classe de modèle associée et le deuxième paramètre spécifie la relation correspondante entre la clé étrangère associée et la clé primaire. En appelant la méthode via('orderItems'), nous précisons que la table d'association intermédiaire OrderItem doit être utilisée dans l'association, au lieu d'utiliser directement l'association entre la table de commande (Order) et la table de produits (Product).

  1. Association individuelle (hasOne)

L'association individuelle signifie qu'il existe une association unidirectionnelle -une association entre deux relations de classes modèles. Dans la méthode d'association, il peut être défini à l'aide de la méthode hasOne.

class Order extends ActiveRecord
{
    public function getCustomer()
    {
        return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
    }
}
Copier après la connexion
Copier après la connexion

Dans le code ci-dessus, nous spécifions la relation d'association entre une classe de modèle Order et une classe de modèle Customer, qui est implémentée via la méthode hasOne. Parmi eux, le premier paramètre spécifie le nom de la classe de modèle associée et le deuxième paramètre spécifie la relation correspondante entre la clé étrangère associée et la clé primaire.

  1. Association plusieurs-à-plusieurs (hasMany)

Une association plusieurs-à-plusieurs indique qu'il existe un plusieurs-à-plusieurs bidirectionnel association entre deux classes modèles . Dans la méthode d'association, il peut être défini à l'aide de la méthode hasMany.

class Order extends ActiveRecord
{
    public function getProducts()
    {
        return $this->hasMany(Product::className(), ['id' => 'product_id'])
            ->viaTable('order_item', ['order_id' => 'id']);
    }
}
Copier après la connexion

Dans le code ci-dessus, nous spécifions la relation entre plusieurs classes de modèle Product dans une classe de modèle Order, qui est implémentée via la méthode hasMany. Parmi eux, le premier paramètre spécifie le nom de la classe de modèle associée et le deuxième paramètre spécifie la relation correspondante entre la clé étrangère associée et la clé primaire. En appelant la méthode viaTable('order_item', ['order_id' => 'id']), on précise que la table d'association intermédiaire order_item doit être utilisée dans l'association.

3. Interroger des données à l'aide d'associations

En définissant des associations, nous pouvons utiliser la méthode ActiveRecord fournie par le framework Yii pour compléter la requête de données correspondante. Voici un exemple simple :

$order = Order::findOne(1);
$customer = $order->customer;
Copier après la connexion

Dans le code ci-dessus, nous utilisons d'abord la méthode findOne pour interroger l'enregistrement de commande avec l'identifiant 1, puis obtenons les informations client correspondant à la commande via la méthode d'association. .

En plus d'accéder directement à la méthode associée, nous pouvons également utiliser la méthode with pour précharger les données associées, réduisant ainsi le besoin d'interroger la base de données plusieurs fois.

$orders = Order::find()->with('customer')->all();
foreach ($orders as $order) {
    echo $order->customer->name;
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons d'abord la méthode find pour interroger tous les enregistrements de commande et préchargeons les informations client associées à la commande en appelant la méthode with('customer'). De cette façon, dans la boucle foreach suivante, chaque fois que l'on accède aux informations client de la commande, elles peuvent être obtenues directement à partir de la mémoire sans interroger à nouveau la base de données.

résumé

Cet article présente principalement les relations du modèle dans le framework Yii, notamment comment définir des relations, différents types de relations et comment utiliser des relations pour interroger des données. En utilisant rationnellement les relations de modèle, nous pouvons considérablement améliorer l'efficacité des requêtes de données et rendre le code du programme plus concis et plus lisible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser le framework PHP Yii pour développer un système de sauvegarde cloud hautement disponible Comment utiliser le framework PHP Yii pour développer un système de sauvegarde cloud hautement disponible Jun 27, 2023 am 09:04 AM

Avec le développement continu de la technologie du cloud computing, la sauvegarde des données est devenue quelque chose que chaque entreprise doit faire. Dans ce contexte, il est particulièrement important de développer un système de sauvegarde cloud hautement disponible. Le framework PHP Yii est un framework puissant qui peut aider les développeurs à créer rapidement des applications Web hautes performances. Ce qui suit explique comment utiliser le framework Yii pour développer un système de sauvegarde cloud hautement disponible. Conception du modèle de base de données Dans le framework Yii, le modèle de base de données est une partie très importante. Parce que le système de sauvegarde des données nécessite beaucoup de tables et de relations

Symfony vs Yii2 : quel framework est le meilleur pour développer des applications Web à grande échelle ? Symfony vs Yii2 : quel framework est le meilleur pour développer des applications Web à grande échelle ? Jun 19, 2023 am 10:57 AM

Alors que la demande d'applications Web continue de croître, les développeurs ont de plus en plus de choix dans le choix des frameworks de développement. Symfony et Yii2 sont deux frameworks PHP populaires. Ils ont tous deux des fonctions et des performances puissantes, mais face à la nécessité de développer des applications Web à grande échelle, quel framework est le plus adapté ? Nous procéderons ensuite à une analyse comparative de Symphony et Yii2 pour vous aider à faire un meilleur choix. Présentation de base Symphony est un framework d'application Web open source écrit en PHP et basé sur

Comment utiliser le framework Yii3 en php ? Comment utiliser le framework Yii3 en php ? May 31, 2023 pm 10:42 PM

À mesure qu’Internet continue de se développer, la demande de développement d’applications Web augmente également. Pour les développeurs, le développement d'applications nécessite un cadre stable, efficace et puissant, qui peut améliorer l'efficacité du développement. Yii est un framework PHP hautes performances de premier plan qui offre des fonctionnalités riches et de bonnes performances. Yii3 est la version nouvelle génération du framework Yii, qui optimise davantage les performances et la qualité du code basé sur Yii2. Dans cet article, nous présenterons comment utiliser le framework Yii3 pour développer des applications PHP.

Requête de données dans le framework Yii : accédez efficacement aux données Requête de données dans le framework Yii : accédez efficacement aux données Jun 21, 2023 am 11:22 AM

Le framework Yii est un framework d'application Web PHP open source qui fournit de nombreux outils et composants pour simplifier le processus de développement d'applications Web, dont la requête de données est l'un des composants importants. Dans le framework Yii, nous pouvons utiliser une syntaxe de type SQL pour accéder à la base de données afin d'interroger et de manipuler les données efficacement. Le générateur de requêtes du framework Yii comprend principalement les types suivants : requête ActiveRecord, requête QueryBuilder, requête de commande et requête SQL originale.

Yii2 vs Phalcon : quel framework est le meilleur pour développer des applications de rendu graphique ? Yii2 vs Phalcon : quel framework est le meilleur pour développer des applications de rendu graphique ? Jun 19, 2023 am 08:09 AM

À l’ère actuelle de l’information, le big data, l’intelligence artificielle, le cloud computing et d’autres technologies sont devenus au centre des préoccupations des grandes entreprises. Parmi ces technologies, la technologie de rendu des cartes graphiques, en tant que technologie de traitement graphique haute performance, fait l'objet de plus en plus d'attention. La technologie de rendu des cartes graphiques est largement utilisée dans le développement de jeux, les effets spéciaux de films et de télévision, la modélisation technique et d'autres domaines. Pour les développeurs, choisir un framework adapté à leurs projets est une décision très importante. Parmi les langages actuels, PHP est un langage très dynamique. Quelques excellents frameworks PHP comme Yii2, Ph.

Compétences en développement PHP : comment implémenter des fonctions d'association de tables de données Compétences en développement PHP : comment implémenter des fonctions d'association de tables de données Sep 21, 2023 pm 01:43 PM

Compétences en développement PHP : Comment implémenter la fonction d'association de tables de données Dans le développement Web, l'association de tables de données est une technologie très importante. En corrélant les données entre différentes tables de données, des fonctions de requête et d'exploitation de données plus complexes et flexibles peuvent être obtenues. Cet article vous expliquera comment utiliser PHP pour implémenter des fonctions de corrélation de tables de données et fournira des exemples de code spécifiques. 1. Préparation Avant de commencer, nous devons créer deux tableaux de données liés. En prenant comme exemple les deux entités étudiants et cours, nous créons respectivement une table étudiant et une table cours. Table des étudiants

Guide de programmation Yii2 : Comment exécuter le service Cron Guide de programmation Yii2 : Comment exécuter le service Cron Sep 01, 2023 pm 11:21 PM

Si vous demandez « Qu'est-ce que Yii ? », consultez mon tutoriel précédent : Introduction au framework Yii, qui passe en revue les avantages de Yii et décrit les nouveautés de Yii 2.0, publié en octobre 2014. Hmm> Dans cette série Programmation avec Yii2, je guiderai les lecteurs dans l'utilisation du framework Yii2PHP. Dans le didacticiel d'aujourd'hui, je vais partager avec vous comment tirer parti des fonctionnalités de la console Yii pour exécuter des tâches cron. Dans le passé, j'ai utilisé wget - une URL accessible sur le Web - dans une tâche cron pour exécuter mes tâches en arrière-plan. Cela soulève des problèmes de sécurité et entraîne des problèmes de performances. Alors que je discutais de certaines façons d'atténuer les risques dans notre série Sécurité pour les startups, j'avais espéré passer aux commandes pilotées par la console.

Compétences en importation de rapports et en corrélation de données pour les graphiques statistiques Vue Compétences en importation de rapports et en corrélation de données pour les graphiques statistiques Vue Aug 18, 2023 pm 02:55 PM

Compétences en matière d'importation de rapports et de corrélation de données pour les graphiques statistiques Vue Introduction : Vue, en tant que framework frontal populaire, est largement utilisé dans diverses applications Web. Dans les applications Web, les graphiques statistiques constituent l’un des moyens les plus courants d’afficher des données. Cet article expliquera comment importer la bibliothèque de graphiques statistiques dans Vue et montrera comment réaliser une mise à jour dynamique des graphiques grâce à des techniques d'association de données. 1. Sélection et importation de bibliothèques de rapports Dans Vue, il existe de nombreuses excellentes bibliothèques de graphiques statistiques parmi lesquelles choisir, telles que ECharts et HighCharts.

See all articles