Maison  >  Article  >  développement back-end  >  À propos de l'utilisation de la base de données et du modèle de ThinkPHP5

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

jacklove
jackloveoriginal
2018-06-15 11:07:385064parcourir

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

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']);
  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();
相同的查询操作,先后顺序有影响。
$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();
  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);

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();

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');

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'])

Utilisation du modèle :

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

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();

Modèle :

$user = User::get(1);

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'])

Modèle :

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

或者 

User::update([    'name'  => 'topthink',    'email' => 'topthink@qq.com',
], ['id' => 1]);

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

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

Supprimer

Base de données :

Db::table('user')->delete(1);

Modèle :

$user = User::get(1);$user->delete();
或者
User::destory(1);

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!

Déclaration:
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