À propos de l'utilisation de la base de données et du modèle de ThinkPHP5

jacklove
Libérer: 2023-04-01 09:18:02
original
5088 Les gens l'ont consulté

1. Architecture de la base de données TP5

À propos de lutilisation de la base de données et du modèle de ThinkPHP5

Db:  是TP5操作数据库的入口类。它的作用是为连接数据库做准备,我们只需要在database.php里填写相应的配置即可。
Copier après la connexion
Connection: 是TP5的连接器类,因为TP5支持四种数据库(Mysql,Pgsql,Sqlite,Sqlsrv),所以TP5封装了一个类来提供统一的调用接口来支持我们连接数据库(这里的连接是惰性连接,只有在执行SQL的时候才会真正连接)。
Copier après la connexion
Query: 查询器,因为不同数据库的SQL语句不同,所以封装了一个Query类来提供统一的接口,以实现不同数据库的CURD操作。查询器是TP5数据访问层的核心,它连接了Connection和Builder。
Copier après la connexion
Builder: 生成器。这个类主要是把Query的查询参数生成相应的sql语句,然后把其返回给Connection供其使用。
Copier après la connexion

2. Accès à la base de données

dans TP5, il y a trois méthodes d'accès à la base de données :

  1. Instruction SQL native.

Db::query('select * from think_user where id=?',[8]);
Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);
Copier après la connexion
  1. Constructeur de requêtes

À propos de lutilisation de la base de données et du modèle de ThinkPHP5

Il convient de noter que, Parmi les méthodes de requête ci-dessus, rechercher, sélectionner, insérer, mettre à jour et supprimer sont toutes des opérations de requête, et les autres sont des opérations auxiliaires. Les opérations auxiliaires renvoient un objet et prennent en charge les appels en chaîne. Mais une fois l’opération de requête exécutée, elle ne peut plus être appelée.

L'ordre des différentes opérations auxiliaires n'a aucun effet, mais l'ordre des mêmes opérations auxiliaires en aura.

不同的辅助操作,先后顺序没影响。Db::table('banner')->where('id', '>', '2')->order('update_time asc')->select();Db::table('banner')->order('update_time asc')->where('id', '>', '2')->select();
Copier après la connexion
相同的查询操作,先后顺序有影响。
$list = Db::table('data')
    ->where('id', '>', 1)
    ->where('name', 'like', '%think%')
    ->order('id', 'desc')
    ->order('create_time', 'desc')
    ->limit(8)
    ->select();
$list = Db::table('data')
    ->where('name', 'like', '%think%')
    ->where('id', '>', 1)
    ->order('create_time', 'desc')
    ->order('id', 'desc')
    ->limit(8)
    ->select();
Copier après la connexion
  1. Modèle

Mappage de relation d'objet ORM Le mappage relationnel d'objet

est mappé aux tables dans notre base de données est ensuite manipulée via le modèle de manipulation.

Comparons-le avec le constructeur de requête

// 查询操作$user = Db::table('user')->find(1);// 取值操作echo $user['name'];echo $user['email'];// 设置操作$user['name']  = 'topthink';$user['email'] = 'thinkphp@qq.com';// 更新操作Db::table('user')->update($user);
Copier après la connexion

S'il s'agit d'une opération de modèle, elle peut être implémentée avec le code suivant

// 查询操作$user = User::get(1);// 取值操作echo $user->name;
echo $user->email;// 设置操作$user->name  = 'topthink';$user->email = 'thinkphp@qq.com';// 更新操作$user->save();
Copier après la connexion

Voici le modèle En externe, c'est-à-dire les opérations d'acquisition et de réglage de la valeur dans le contrôleur, mais à l'intérieur du modèle, les méthodes suivantes sont utilisées :

// 取值操作echo $user->getData('name');
echo $user->getData('email');// 设置操作echo $user->data('name', 'SpawN');
echo $user->data('email', '123@qq.com');
Copier après la connexion

Opération CURD du modèle

Créer

Utilisation de la base de données :

Db::table('user')->insert([    'name' => 'spawn',    'email' => '123@qq.com'])
Copier après la connexion

Utilisation du modèle :

$user = new User;$user->save([    'name' => 'spawn',    'email' => '123@qq.com'])$user = User::create([    'name' => 'sapwn',    'email' => '123@qq.com'])
Copier après la connexion

Résumé :

  • sauvegarde (dynamique ) Retour : Nombre d'enregistrements affectés

  • create(static) Retour : Instance d'objet modèle (la méthode peut être appelée directement)

Lire

Db :

$user = Db::table('user')->where('id', 1)->find();
Copier après la connexion

Modèle :

$user = User::get(1);
Copier après la connexion

Il convient de noter que find et select sont des méthodes de constructeur de requêtes, get et toutes sont méthode des modèles. Mais le modèle est basé sur le constructeur de requête, donc le modèle peut appeler les méthodes find et select, mais le constructeur de requête ne peut pas appeler les méthodes get et toutes les méthodes

Résumé :

Fonctions de méthode Valeur de retour
get Interroger une instance d'objet modèle d'enregistrement unique
find Interroger une instance d'objet modèle d'enregistrement unique
all Interroger plusieurs enregistrements en fonction de la clé primaire Tableau ou ensemble de données contenant des instances d'objet modèle
select Interroger plusieurs enregistrements en fonction sous conditions Contenant des instances d'objet de modèle Tableau ou ensemble de données

Mise à jour

Db :

Db::table('user')->where('id', 1)->update([    'name' => 'haha',    'email' => 'heihei@qq.com'])
Copier après la connexion

Modèle :

$user = User::get(1);$user->save([    'name' => 'haha',    'email' => 'heihei@qq.com'])

或者 

User::update([    'name'  => 'topthink',    'email' => 'topthink@qq.com',
], ['id' => 1]);
Copier après la connexion

Résumé :

Méthode Fonction Valeur de retour
save Mettre à jour les données Nombre d'enregistrements affectés
mettre à jour les données (statiques) Renvoyer l'instance d'objet de modèle

需要注意的是,模型的更新操作是只更新有变化的数据。性能比较好。
Copier après la connexion

Supprimer

Base de données :

Db::table('user')->delete(1);
Copier après la connexion

Modèle :

$user = User::get(1);$user->delete();
或者
User::destory(1);
Copier après la connexion

Résumé :

Méthode Fonction Valeur de retour
supprimer Supprimer les données actuelles Numéro d'enregistrements affectés
la destruction supprime les données spécifiées (statique) Nombre d'enregistrements affectés

Maintenant que nous maîtrisons les opérations CURD de base du modèle, résumons les différences de méthode :

Utilisation Modèle de classe de base de données (dynamique) modèle (statique)
Créer une insertion, une sauvegarde, une création
Mettre à jour une mise à jour, une sauvegarde de la mise à jour
Lire une seule recherche, trouver, obtenir
Lire plusieurs sélections, sélectionner tout
Supprimer, supprimer, supprimer, détruire

Cet article explique l'utilisation de la base de données et du modèle de ThinkPHP5. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois.

Recommandations associées :

Une étude de cas sur le fonctionnement de la base de données thinkphp5.0

Énumérez quelques similitudes et différences entre ThinkPHP5 et ThinkPHP3

Créez le projet ThinkPhp le plus simple

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!

É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
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!