Maison cadre php PensezPHP Comment effectuer des opérations d'association de modèles ORM dans ThinkPHP6 ?

Comment effectuer des opérations d'association de modèles ORM dans ThinkPHP6 ?

Jun 12, 2023 am 09:45 AM
thinkphp orm模型 关联操作

ThinkPHP6 est un framework de développement PHP très populaire qui fournit de nombreuses méthodes d'opération ORM (Object Relational Mapping) pratiques pour simplifier les opérations de base de données, et a ajouté des méthodes d'association de modèles ORM plus riches dans la dernière version, permettant aux développeurs d'effectuer des requêtes associées plus facilement. opérations entre les tables de la base de données.

Cet article expliquera comment effectuer des opérations d'association de modèle ORM dans ThinkPHP6, y compris les opérations d'association un-à-un, un-à-plusieurs et plusieurs-à-plusieurs. Il expliquera également le mécanisme de mise en œuvre spécifique des opérations d'association.

Opération d'association un-à-un

L'opération d'association un-à-un fait référence à une opération où il n'y a qu'une correspondance un-à-un entre deux tables. Par exemple, nous avons une table utilisateur (users) et une table de détails utilisateur (user_details). Chaque utilisateur correspond à un enregistrement de détails utilisateur. Il existe une relation un-à-un entre la table utilisateur et la table de détails utilisateur.

Tout d'abord, définissez une association un-à-un dans la classe modèle :

namespace appmodel;

use thinkModel;

class User extends Model
{
    // 定义一对一关联方法
    public function detail()
    {
        return $this->hasOne('UserDetail');
    }
}
Copier après la connexion

Lors de la définition de l'association, nous utilisons la méthode hasOne, qui renvoie une instance d'objet BelongsTo, indiquant que la classe modèle actuelle "en possède une" pointant vers le modèle UserDetail Relation un-à-un entre les classes.

Ensuite, nous définissons la méthode d'association inverse dans la classe modèle UserDetail :

namespace appmodel;

use thinkModel;

class UserDetail extends Model
{
    // 定义反向关联方法
    public function user()
    {
        return $this->belongsTo('User');
    }
}
Copier après la connexion

Dans la classe modèle UserDetail, nous utilisons également la méthode AppartientTo, qui renverra une instance d'objet hasOne, indiquant que la classe modèle actuelle "appartient" au Modèle utilisateur Relation un-à-un entre les classes.

Nous pouvons désormais effectuer une requête de corrélation individuelle via la méthode suivante :

// 查询用户信息,包括其详细信息
$user = User::with(['detail'])->find(1);

// 查询用户信息,只包括其详细信息
$user = User::with(['detail' => function($query){
    $query->field('user_id, address');
}])->find(1);
Copier après la connexion

Dans l'exemple ci-dessus, nous utilisons la méthode with pour spécifier le modèle de corrélation et la méthode find pour interroger les informations utilisateur. Les résultats de la requête associée seront renvoyés sous la forme d'un tableau et le filtrage des champs peut être effectué selon les besoins.

Opération d'association un-à-plusieurs

L'opération d'association un-à-plusieurs signifie que les enregistrements d'une table peuvent correspondre à plusieurs enregistrements d'une autre table. Par exemple, nous avons un horaire de cours (cours) et une table d'étudiants (étudiants). Chaque cours peut avoir plusieurs étudiants qui suivent des cours au choix. Il existe une relation un-à-plusieurs entre l'horaire de cours et la table des étudiants.

Tout d'abord, définissez une association un-à-plusieurs dans la classe modèle Course :

namespace appmodel;

use thinkModel;

class Course extends Model
{
    // 定义一对多关联方法
    public function students()
    {
        return $this->hasMany('Student');
    }
}
Copier après la connexion

Lors de la définition de l'association, nous utilisons la méthode hasMany, qui renvoie une instance d'objet HasMany, indiquant que la classe modèle actuelle "a plusieurs" points à Relation d'association un-à-plusieurs de la classe modèle Student.

Ensuite, nous définissons la méthode d'association inverse dans la classe modèle Student :

namespace appmodel;

use thinkModel;

class Student extends Model
{
    // 定义反向关联方法
    public function course()
    {
        return $this->belongsTo('Course');
    }
}
Copier après la connexion

Dans la classe modèle Student, nous utilisons également la méthode AppartientTo, qui renverra une instance d'objet hasOne, indiquant que la classe modèle actuelle "appartient" au Modèle de cours Relation un à plusieurs entre les classes.

Nous pouvons désormais effectuer une requête de corrélation un-à-plusieurs via la méthode suivante :

// 查询课程信息,包括其选修学生信息
$course = Course::with(['students'])->find(1);

// 查询课程信息,只包括其选修学生姓名和年龄信息
$course = Course::with(['students' => function($query){
    $query->field('name, age');
}])->find(1);
Copier après la connexion

Dans l'exemple ci-dessus, nous spécifions le modèle de corrélation via la méthode with et interrogeons les informations sur le cours à l'aide de la méthode find. Les résultats de la requête associée seront renvoyés sous la forme d'un tableau et le filtrage des champs peut être effectué selon les besoins.

Opération d'association plusieurs-à-plusieurs

L'opération d'association plusieurs-à-plusieurs fait référence à l'opération où il existe une relation plusieurs-à-plusieurs entre deux tables. Par exemple, nous avons un horaire de cours (cours) et une table d'enseignants (enseignants). Chaque cours peut être enseigné par plusieurs enseignants, et chaque enseignant peut également enseigner plusieurs cours. Il existe une relation plusieurs-à-plusieurs entre l'horaire des cours. et la table des professeurs.

Tout d'abord, définissez la relation d'association plusieurs-à-plusieurs dans la classe modèle Course :

namespace appmodel;

use thinkModel;

class Course extends Model
{
    // 定义多对多关联方法
    public function teachers()
    {
        return $this->belongsToMany('Teacher', 'course_teacher');
    }
}
Copier après la connexion

Lors de la définition de la relation d'association, nous utilisons la méthode AppartientToMany, qui renverra une instance d'objet BelongsToMany, indiquant que la classe modèle actuelle "appartient à plusieurs" pointe vers la relation plusieurs-à-plusieurs de la classe modèle Enseignant. Nous devons également transmettre le deuxième paramètre « course_teacher », qui représente le nom de la table intermédiaire.

Ensuite, nous définissons la méthode d'association inverse dans la classe modèle Teacher :

namespace appmodel;

use thinkModel;

class Teacher extends Model
{
    // 定义反向关联方法
    public function courses()
    {
        return $this->belongsToMany('Course', 'course_teacher');
    }
}
Copier après la connexion

Dans la classe modèle Teacher, nous utilisons également la méthode AppartientToMany, qui renverra une instance d'objet BelongsToMany, indiquant que la classe modèle actuelle "contient plusieurs" points Relation plusieurs-à-plusieurs de la classe modèle de cours. Vous devez également transmettre le deuxième paramètre « course_teacher », qui représente le nom de la table intermédiaire.

Nous pouvons désormais effectuer des requêtes de corrélation plusieurs-à-plusieurs via la méthode suivante :

// 查询课程信息,包括其授课老师信息
$course = Course::with(['teachers'])->find(1);

// 查询课程信息,只包括其授课老师姓名和职称信息
$course = Course::with(['teachers' => function($query){
    $query->field('name, title');
}])->find(1);
Copier après la connexion

Dans l'exemple ci-dessus, nous spécifions le modèle de corrélation via la méthode with et recherchons les informations sur le cours à l'aide de la méthode find. Les résultats de la requête associée seront renvoyés sous la forme d'un tableau et le filtrage des champs peut être effectué selon les besoins.

Jusqu'à présent, nous avons appris comment effectuer des opérations d'association de modèles ORM dans ThinkPHP6, y compris des opérations d'association un-à-un, un-à-plusieurs et plusieurs-à-plusieurs. Les opérations d'association de modèles ORM peuvent simplement compléter des requêtes d'association entre les tables de base de données, améliorant considérablement l'efficacité du développement et garantissant l'exactitude des opérations de base de données.

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

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 exécuter le projet thinkphp Comment exécuter le projet thinkphp Apr 09, 2024 pm 05:33 PM

Pour exécuter le projet ThinkPHP, vous devez : installer Composer ; utiliser Composer pour créer le projet ; entrer dans le répertoire du projet et exécuter php bin/console serve ; visiter http://localhost:8000 pour afficher la page d'accueil.

Il existe plusieurs versions de thinkphp Il existe plusieurs versions de thinkphp Apr 09, 2024 pm 06:09 PM

ThinkPHP dispose de plusieurs versions conçues pour différentes versions de PHP. Les versions majeures incluent 3.2, 5.0, 5.1 et 6.0, tandis que les versions mineures sont utilisées pour corriger les bogues et fournir de nouvelles fonctionnalités. La dernière version stable est ThinkPHP 6.0.16. Lorsque vous choisissez une version, tenez compte de la version PHP, des exigences en matière de fonctionnalités et du support de la communauté. Il est recommandé d'utiliser la dernière version stable pour de meilleures performances et une meilleure assistance.

Comment exécuter thinkphp Comment exécuter thinkphp Apr 09, 2024 pm 05:39 PM

Étapes pour exécuter ThinkPHP Framework localement : Téléchargez et décompressez ThinkPHP Framework dans un répertoire local. Créez un hôte virtuel (facultatif) pointant vers le répertoire racine ThinkPHP. Configurez les paramètres de connexion à la base de données. Démarrez le serveur Web. Initialisez l'application ThinkPHP. Accédez à l'URL de l'application ThinkPHP et exécutez-la.

Comment installer thinkphp Comment installer thinkphp Apr 09, 2024 pm 05:42 PM

Étapes d'installation de ThinkPHP : Préparez les environnements PHP, Composer et MySQL. Créez des projets à l'aide de Composer. Installez le framework ThinkPHP et ses dépendances. Configurez la connexion à la base de données. Générez le code de l'application. Lancez l'application et visitez http://localhost:8000.

Lequel est le meilleur, Laravel ou thinkphp ? Lequel est le meilleur, Laravel ou thinkphp ? Apr 09, 2024 pm 03:18 PM

Comparaison des performances des frameworks Laravel et ThinkPHP : ThinkPHP fonctionne généralement mieux que Laravel, en se concentrant sur l'optimisation et la mise en cache. Laravel fonctionne bien, mais pour les applications complexes, ThinkPHP peut être mieux adapté.

Suggestions de développement : Comment utiliser le framework ThinkPHP pour implémenter des tâches asynchrones Suggestions de développement : Comment utiliser le framework ThinkPHP pour implémenter des tâches asynchrones Nov 22, 2023 pm 12:01 PM

"Suggestions de développement : comment utiliser le framework ThinkPHP pour implémenter des tâches asynchrones" Avec le développement rapide de la technologie Internet, les applications Web ont des exigences de plus en plus élevées pour gérer un grand nombre de requêtes simultanées et une logique métier complexe. Afin d'améliorer les performances du système et l'expérience utilisateur, les développeurs envisagent souvent d'utiliser des tâches asynchrones pour effectuer certaines opérations chronophages, telles que l'envoi d'e-mails, le traitement des téléchargements de fichiers, la génération de rapports, etc. Dans le domaine de PHP, le framework ThinkPHP, en tant que framework de développement populaire, offre des moyens pratiques d'implémenter des tâches asynchrones.

Quelles sont les performances de thinkphp ? Quelles sont les performances de thinkphp ? Apr 09, 2024 pm 05:24 PM

ThinkPHP est un framework PHP hautes performances présentant des avantages tels que le mécanisme de mise en cache, l'optimisation du code, le traitement parallèle et l'optimisation des bases de données. Les tests de performances officiels montrent qu'il peut gérer plus de 10 000 requêtes par seconde et qu'il est largement utilisé dans les sites Web à grande échelle et les systèmes d'entreprise tels que JD.com et Ctrip dans les applications réelles.

Développement du système de gestion backend ThinkPHP6 : réalisation des fonctions backend Développement du système de gestion backend ThinkPHP6 : réalisation des fonctions backend Aug 27, 2023 am 11:55 AM

Développement du système de gestion backend ThinkPHP6 : implémentation des fonctions backend Introduction : Avec le développement continu de la technologie Internet et la demande du marché, de plus en plus d'entreprises et d'organisations ont besoin d'un système de gestion backend efficace, sûr et flexible pour gérer les données commerciales et effectuer la gestion opérationnelle. Cet article utilisera le framework ThinkPHP6 pour démontrer à travers des exemples comment développer un système de gestion backend simple mais pratique, comprenant des fonctions de base telles que le contrôle des autorisations, l'ajout de données, la suppression, la modification et la requête. Préparation de l'environnement Avant de commencer, nous devons installer PHP, MySQL, Com

See all articles