Maison cadre php PensezPHP Parlons de la façon d'utiliser les modèles dans ThinkPHP 5.0

Parlons de la façon d'utiliser les modèles dans ThinkPHP 5.0

Apr 21, 2023 am 10:12 AM

ThinkPHP 5.0 est l'un des frameworks de développement PHP les plus utilisés en Chine. Il a non seulement apporté de nombreuses optimisations et améliorations au code de base, mais a également ajouté de nombreuses nouvelles fonctions et fonctionnalités, parmi lesquelles le modèle a également reçu une grande attention. . mise à niveau. Cet article présentera en détail comment utiliser les modèles dans ThinkPHP 5.0.

1. Qu'est-ce qu'un modèle ?

Un modèle est simplement une classe d'opération de données, utilisée pour faire fonctionner la base de données. Dans ThinkPHP, le modèle encapsule la table de données, permettant des opérations pratiques et rapides sur la table de données. Lors de la création d'un modèle, il vous suffit d'hériter de ThinkModel au lieu d'écrire un grand nombre de requêtes et d'instructions SQL.

2. Créez un modèle simple

  1. Créez d'abord un modèle dans ThinkPHP 5.0

Dans ThinkPHP 5.0, créer un modèle est très simple. Il vous suffit de créer un nouveau répertoire de modèle dans le répertoire de l'application, puis de créer un. répertoire modèle dans le répertoire modèle. Créez un nouveau fichier nommé User.php avec le code suivant :

<?php

namespace app\model;

use think\Model;

class User extends Model
{
}
Copier après la connexion
  1. Connectez-vous à la base de données

ThinkPHP 5.0 utilise PDO pour se connecter à la base de données par défaut et les informations de connexion à la base de données sont configurées. dans le fichier database.php du répertoire de l’application. Une fois la connexion réussie, vous pouvez effectuer les opérations correspondantes dans le modèle.

  1. Opérations CRUD de base du modèle

Dans ThinkPHP 5.0, les opérations CRUD de base du modèle ont été encapsulées et peuvent être appelées directement. Prenez le modèle User comme exemple pour démontrer les opérations CRUD les plus courantes :

(1) Insérer des données

$user = new User();

$user->name = 'Tom';
$user->age = 20;

$user->save();
Copier après la connexion

Ce qui précède est la manière la plus courante d'insérer des données, puis d'attribuer des valeurs à l'objet. attributs, et enfin appelez La méthode save() enregistre les données dans la base de données.

(2) Supprimer les données

User::destroy(1);
Copier après la connexion

Le 1 ici est l'ID des données à supprimer Si vous souhaitez supprimer plusieurs données, vous pouvez transmettre un tableau. Vous pouvez également utiliser la méthode Where pour la suppression conditionnelle.

(3) Interroger les données

// 查询所有数据
$users = User::all();

// 根据条件查询单条数据
$user = User::where('name', 'Tom')->find();

// 根据条件查询多条数据
$users = User::where('age', '>', 18)->select();
Copier après la connexion

(4) Mettre à jour les données

$user = User::get(1);

$user->name = 'Jack';

$user->save();
Copier après la connexion

Autrement dit, interrogez d'abord les données à modifier, puis enregistrez-les dans la base de données via la méthode save() après avoir modifié les données.

3. Opérations de corrélation de modèles

Dans le développement réel, il est souvent nécessaire d'effectuer des requêtes conjointes complexes et des opérations de corrélation sur plusieurs tables de données. Le modèle ThinkPHP 5.0 fournit des opérations d'association riches qui peuvent résoudre rapidement les problèmes d'association entre les tables.

  1. Association individuelle

Dans ThinkPHP 5.0, il existe trois méthodes d'association individuelle :

(1) Attributs du modèle d'association

class User extends Model
{
    public function profile()
    {
        return $this->hasOne('Profile');
    }
}

class Profile extends Model
{
    public function user()
    {
        return $this->belongsTo('User');
    }
}

$user = User::get(1);

$profile = $user->profile;
Copier après la connexion

Dans le code ci-dessus, le modèle utilisateur et le modèle de profil sont combinés via la méthode hasOne(). Associez-le, puis appelez l'attribut $user->profile pour obtenir les données associées.

(2) Requête associée

$user = User::with('profile')->select();

$profile = $user->profile;
Copier après la connexion

Dans le code ci-dessus, la requête associée est directement effectuée via la méthode with(), puis l'attribut $user->profile est appelé pour obtenir les données associées.

(3) Requête intégrée

$user = User::field('name')
            ->join('profile', 'profile.user_id=user.id')
            ->select();

$profile = $user->profile;
Copier après la connexion

Dans le code ci-dessus, la table User et la table Profile sont connectées via la méthode join(), puis les champs de la table Profile peuvent être obtenus dans l'expression de champ.

  1. Association un-à-plusieurs

Dans ThinkPHP 5.0, il existe également trois méthodes d'association un-à-plusieurs :

(1) Attributs du modèle d'association

class User extends Model
{
    public function books()
    {
        return $this->hasMany('Book');
    }
}

class Book extends Model
{
    public function user()
    {
        return $this->belongsTo('User');
    }
}

$user = User::get(1);

$books = $user->books;
Copier après la connexion

Dans le code ci-dessus, le modèle utilisateur et le livre sont connectés via la méthode hasMany(). Les modèles sont associés, puis la propriété $user->books est appelée pour obtenir les données associées.

(2) Requête associée

$user = User::with('books')->select();

$books = $user->books;
Copier après la connexion

Dans le code ci-dessus, la requête associée est directement effectuée via la méthode with(), puis l'attribut $user->books est appelé pour obtenir les données associées.

(3) Requête intégrée

$user = User::field('name')
            ->join('book', 'book.user_id=user.id')
            ->select();

$books = $user->books;
Copier après la connexion

Dans le code ci-dessus, la table User est connectée à la table Book via la méthode join(), puis les champs de la table Book peuvent être obtenus dans l'expression de champ.

  1. Association plusieurs-à-plusieurs

L'association plusieurs-à-plusieurs a également trois manières dans ThinkPHP 5.0 :

(1) Le modèle principal associe les attributs du modèle

class User extends Model
{
    public function roles()
    {
        return $this->belongsToMany('Role');
    }
}

class Role extends Model
{
    public function users()
    {
        return $this->belongsToMany('User');
    }
}

$user = User::get(1);

$roles = $user->roles;
Copier après la connexion

Dans le code ci-dessus, le modèle utilisateur et le rôle sont connecté via la méthode AppartientToMany(). Les modèles sont associés, puis la propriété $user->roles est appelée pour obtenir les données associées.

(2) Interrogez les tables intermédiaires séparément

$user = User::get(1);

$roles = $user->roles()
            ->where('status', '1')
            ->select();
Copier après la connexion

Dans le code ci-dessus, appelez la méthode $user->roles() pour obtenir la table intermédiaire, puis utilisez la méthodewhere() pour effectuer une requête conditionnelle.

(3) Requête d'intégration de table intermédiaire

$user = User::field('name,role.name as rolename')
            ->join('user_role','user_role.user_id=user.id')
            ->join('role', 'user_role.role_id=role.id')
            ->select();

$roles = $user->roles;
Copier après la connexion

Dans le code ci-dessus, la table User, la table UserRole et la table Role sont connectées via la méthode join(), puis les champs de la table Role peuvent être obtenus dans l'expression de champ .

4. Événements de modèle

Les événements de modèle ThinkPHP 5.0 fournissent de nombreux points d'ancrage utiles dans le cycle de vie du modèle, qui nous permettent d'exploiter et de traiter les données à différents moments et étapes, et peuvent facilement mettre en œuvre la vérification des données et le remplissage automatique des données. mise à jour et autres fonctions. Les événements couramment utilisés sont les suivants :

(1) Événement de pré-requête

class User extends Model
{
    protected static function onBeforeFind($query)
    {
        // before find event
    }
}
Copier après la connexion

Dans le code ci-dessus, l'événement de pré-requête est ajouté via la méthode onBeforeFind().

(2) Événement de pré-insertion

class User extends Model
{
    protected static function onBeforeInsert($data)
    {
        // before insert event
    }
}
Copier après la connexion

Dans le code ci-dessus, ajoutez l'événement de pré-insertion via la méthode onBeforeInsert().

(3) Événement de pré-mise à jour

class User extends Model
{
    protected static function onBeforeUpdate($data)
    {
        // before update event
    }
}
Copier après la connexion

Dans le code ci-dessus, ajoutez l'événement de pré-mise à jour via la méthode onBeforeUpdate().

(4) Événement de pré-suppression

class User extends Model
{
    protected static function onBeforeDelete($data)
    {
        // before delete event
    }
}
Copier après la connexion

Dans le code ci-dessus, ajoutez l'événement de pré-suppression via la méthode onBeforeDelete().

5.Résumé

Grâce à l'introduction de cet article, nous pouvons voir que le modèle de ThinkPHP 5.0 est très simple à utiliser et prend en charge les opérations CRUD et les requêtes associées couramment utilisées. Dans le même temps, les événements de modèle peuvent facilement mettre en œuvre des fonctions telles que la vérification des données, le remplissage automatique et la mise à jour des données. Grâce à l'utilisation de modèles d'apprentissage approfondis, l'efficacité du développement peut être améliorée et le processus de développement du projet peut être accéléré.

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)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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 puis-je utiliser ThinkPHP pour créer des applications de ligne de commande? Comment puis-je utiliser ThinkPHP pour créer des applications de ligne de commande? Mar 12, 2025 pm 05:48 PM

Cet article montre la création d'applications de ligne de commande (CLI) en utilisant les capacités CLI de ThinkPhp. Il met l'accent sur les meilleures pratiques telles que la conception modulaire, l'injection de dépendance et la gestion des erreurs robuste, tout en mettant en évidence les pièges communs tels que INSU

Quelles sont les principales considérations pour utiliser ThinkPhp dans une architecture sans serveur? Quelles sont les principales considérations pour utiliser ThinkPhp dans une architecture sans serveur? Mar 18, 2025 pm 04:54 PM

L'article traite des considérations clés pour l'utilisation de ThinkPHP dans des architectures sans serveur, en se concentrant sur l'optimisation des performances, la conception sans état et la sécurité. Il met en évidence des avantages tels que la rentabilité et l'évolutivité, mais relève également des défis

Quelles sont les caractéristiques avancées du conteneur d'injection de dépendance de ThinkPhp? Quelles sont les caractéristiques avancées du conteneur d'injection de dépendance de ThinkPhp? Mar 18, 2025 pm 04:50 PM

Le conteneur IOC de ThinkPhp propose des fonctionnalités avancées comme le chargement paresseux, la liaison contextuelle et l'injection de méthode pour une gestion efficace des dépendances dans les applications PHP. COMMANDE CHARACTER: 159

Comment puis-je prévenir les vulnérabilités d'injection SQL dans ThinkPhp? Comment puis-je prévenir les vulnérabilités d'injection SQL dans ThinkPhp? Mar 14, 2025 pm 01:18 PM

L'article discute de la prévention des vulnérabilités d'injection SQL dans ThinkPhP à travers des requêtes paramétrées, en évitant le SQL brut, en utilisant ORM, des mises à jour régulières et une bonne gestion des erreurs. Il couvre également les meilleures pratiques pour sécuriser les requêtes de base de données et le validat

Comment construire un système de file d'attente de tâches distribué avec ThinkPhp et RabbitMQ? Comment construire un système de file d'attente de tâches distribué avec ThinkPhp et RabbitMQ? Mar 18, 2025 pm 04:45 PM

L'article décrit la création d'un système de file d'attente de tâches distribué à l'aide de ThinkPhp et RabbitMQ, en se concentrant sur l'installation, la configuration, la gestion des tâches et l'évolutivité. Les problèmes clés incluent assurer la haute disponibilité, éviter les pièges communs comme Imprope

Quelles sont les principales caractéristiques du cadre de test intégré de ThinkPHP? Quelles sont les principales caractéristiques du cadre de test intégré de ThinkPHP? Mar 18, 2025 pm 05:01 PM

L'article traite du cadre de test intégré de ThinkPhP, mettant en évidence ses principales fonctionnalités telles que les tests d'unité et d'intégration, et comment il améliore la fiabilité des applications grâce à la détection précoce des bogues et à une meilleure qualité de code.

Quelles sont les principales différences entre ThinkPhp 5 et ThinkPhp 6, et quand utiliser chacun? Quelles sont les principales différences entre ThinkPhp 5 et ThinkPhp 6, et quand utiliser chacun? Mar 14, 2025 pm 01:30 PM

L'article traite des différences clés entre ThinkPHP 5 et 6, en se concentrant sur l'architecture, les fonctionnalités, les performances et l'adéquation pour les mises à niveau héritées. ThinkPhp 5 est recommandé pour les projets traditionnels et les systèmes hérités, tandis que ThinkPhp 6 convient au nouveau PR

Quelles sont les meilleures façons de gérer les téléchargements de fichiers et le stockage cloud dans ThinkPhp? Quelles sont les meilleures façons de gérer les téléchargements de fichiers et le stockage cloud dans ThinkPhp? Mar 17, 2025 pm 02:28 PM

L'article traite des meilleures pratiques pour gérer les téléchargements de fichiers et intégrer le stockage cloud dans ThinkPHP, en se concentrant sur la sécurité, l'efficacité et l'évolutivité.

See all articles