Maison > développement back-end > tutoriel php > PHP utilise ORM pour les opérations de base de données

PHP utilise ORM pour les opérations de base de données

*文
Libérer: 2023-03-18 08:34:01
original
2967 Les gens l'ont consulté

Le mappage relationnel d'objet ORM, l'objet O (Object), est l'entité du projet, plus précisément, c'est le modèle de données, qui peut également être considéré comme la classe de persistance. Données relationnelles R (Relation), mappage M (Mapping), processus de mappage d'objets à des données relationnelles et de mappage de données relationnelles à des objets. Une compréhension plus intuitive est que ORM utilise la pensée POO pour générer des instructions SQL d'ajout, de suppression, de modification et d'interrogation.

Par rapport au PDO, ORM est plus adapté aux projets de développement rapide sans écrire d'instructions SQL. Voici quelques ORM utiles.

Medoo

Ce qui suit utilise la version 1.0.2 comme exemple.

Exigences en matière d'environnement

PHP 5.1+, PHP 5.4+ recommandé et PDO pris en charge.
Au moins un des MySQL, MSSQL, SQLite installé.

Comment installer

Medoo prend en charge l'installation et le téléchargement direct de Composer.

Installer à l'aide de Composer :

composer require catfan/Medoo
composer update
Copier après la connexion

Télécharger directement :
https://github.com/catfan/Medoo/archive/master.zip

Commencer

Présentez Medoo et configurez la base de données :

<?php
      //使用Composer安装的这样引入
      //require &#39;vendor/autoload.php&#39;;
      // 直接下载的这样引入
      require_once &#39;medoo.php&#39;; 
      // 初始化
      $db = new medoo([    
                  &#39;database_type&#39; => &#39;mysql&#39;,    
                  &#39;database_name&#39; => &#39;test&#39;,    
                  &#39;server&#39; => &#39;localhost&#39;,    
                  &#39;username&#39; => &#39;root&#39;,    
                  &#39;password&#39; => &#39;123456&#39;,    
                  &#39;charset&#39; => &#39;utf8&#39;,    
                //可选:端口
                &#39;port&#39; => 3306, 
                //可选:表前缀
                &#39;prefix&#39; => &#39;&#39;, 
                // PDO驱动选项 http://www.php.net/manual/en/pdo.setattribute.php
                &#39;option&#39; => [ PDO::ATTR_CASE => PDO::CASE_NATURAL ]
      ]);
Copier après la connexion

Si c'est SQLite :

$database = new medoo([    &#39;database_type&#39; => &#39;sqlite&#39;,    &#39;database_file&#39; => &#39;my/database/path/database.db&#39;]);
Copier après la connexion

CURD

Requête (Lire) :

select($table, $columns, $where) //获取所有记录
    - table [string] 表名
    - columns [string/array] 字段
    - where (可选) [array] 查询条件get($table, $columns, $where) //仅获取一条数据select($table, $join, $columns, $where)
    - table [string] 表名
    - join [array] 关联查询,如果没有可以忽略
    - columns [string/array] 字段
    - where (可选) [array] 查询条件
Copier après la connexion

Exemple :

$user = $db->select(&#39;user&#39;, &#39;*&#39;); 
//返回所有数据
$user = $db->get(&#39;user&#39;, &#39;*&#39;); 
//返回一条数据
$user = $db->select(&#39;user&#39;,&#39;*&#39;, array(&#39;name &#39; => &#39;joy&#39;));
$user = $db->select(&#39;user&#39;,&#39;name&#39;, array(&#39;age[>] &#39; => 20)); 
$user = $db->select(&#39;user&#39;,[&#39;name&#39;,&#39;age&#39;], array(&#39;age[<=] &#39; => 20));
Copier après la connexion

Créer :

insert($table, $data)
Copier après la connexion

Exemple :

$db->insert(&#39;user&#39;, array(&#39;name&#39;=> &#39;t3&#39;, &#39;age&#39;=>22)); //返回自增id
Copier après la connexion

Remarque : si les données contiennent des sous-tableaux, elles seront sérialisées par serialize(). Vous pouvez utiliser json_encode() comme stockage JSON.

Mise à jour :

<🎜. >
update($table, $data, $where)
Copier après la connexion
Exemple :

$db->update(&#39;user&#39;, array(&#39;name&#39;=> &#39;t5&#39;), array(&#39;id&#39;=> 23)); //返回受影响的行数
Copier après la connexion

Supprimer :

delete($table, $where)
Copier après la connexion
Exemple :

$db->update(&#39;user&#39;,  array(&#39;id&#39;=> 23)); //返回受影响的行数
Copier après la connexion

Requête d'agrégation

$db->has(&#39;user&#39;,  array(&#39;id&#39;=> 23)); //记录是否存在
$db->count(&#39;user&#39;,  array(&#39;id[>]&#39;=> 23));//统计
$db->max(&#39;user&#39;, &#39;age&#39;, array(&#39;gender&#39;=> 1));//最大值
$db->min(&#39;user&#39;, &#39;age&#39;, array(&#39;gender&#39;=> 2)); //最小值
$db->avg(&#39;user&#39;,  &#39;age&#39;, array(&#39;gender&#39;=> 2)); //平均值
$db->sum(&#39;user&#39;,  &#39;age&#39;, array(&#39;gender&#39;=> 2)); //求和
Copier après la connexion
Les méthodes ci-dessus prennent toutes en charge le deuxième paramètre, $join, qui est une requête connexe.

Mécanisme de transaction

$db->action(function($db) {    
      try{
        $db->insert("account", [ "name" => "foo", "email" => "bar@abc.com" ]);
        $db->delete("account", [ "user_id" => 2312 ]);
    }catch(Exception $e){        
          // 返回false就会回滚事务
        return false;
    }
});
Copier après la connexion

Utilisez la requête

pour utiliser SQL directement.

//查询
$data = $db->query("SELECT * FROM user")->fetchAll();
print_r($data);
//删除
$db->query("DELETE FROM user where name=&#39;t5&#39; ");
Copier après la connexion

Utiliser PDO directement

Medoo est basé sur PDO, vous pouvez donc appeler directement l'instance PDO.

Récupérez l'instance PDO :

$pdo = $db->pdo;
Copier après la connexion
Ensuite, vous pouvez utiliser toutes les méthodes de l'objet PDO.

1.PDO::beginTransaction — Démarrer une transaction

2.PDO::commit — Valider une transaction
3.PDO::__construct — Créer une instance PDO représentant une connexion à une base de données
4.PDO::errorCode — Récupère le SQLSTATE lié à la dernière opération du handle de base de données >7.PDO::getAttribute — Récupère les attributs d'une connexion à la base de données
*8.PDO::getAvailableDrivers — Renvoie un tableau des pilotes disponibles drivers (sachez-le simplement)
*9.PDO::inTransaction — Vérifiez si dans une transaction (comprenez-le simplement)
10.PDO::lastInsertId — Renvoie l'ID ou la valeur de séquence de la dernière ligne insérée
11.PDO::prepare — Crée un prétraitement SQL et renvoie un objet PDOStatement
12.PDO::query — utilisé pour exécuter des instructions SQL de requête et renvoyer des objets PDOStatement
13.PDO::quote — ajouter des guillemets simples à chaînes SQL
14.PDO::rollBack — annuler une transaction
15.PDO::setAttribute — Définir l'attribut


Exemple :

transaction pdo :

$stmt = $pdo->query(&#39;select * from user limit 2&#39;); //返回一个PDOStatement对象
//$row = $stmt->fetch(); //从结果集中获取下一行,用于while循环
$rows = $stmt->fetchAll(); //获取所有
print_r($rows);
Copier après la connexion

Utiliser DEBUG

$pdo->beginTransaction();//开启事务处理
    try{//PDO预处理以及执行语句...
        $pdo->commit();//提交事务
    }catch(PDOException $e){
    $pdo->rollBack();//事务回滚
    //相关错误处理
    throw $e;
}
Copier après la connexion
debug() imprime l'instruction SQL finale

Ajouter la méthode debug() devant select, get, insert, update et autres méthodes pour imprimer l'instruction SQL, et le programme ne continuera pas à s'exécuter :

error() renvoie le message d'erreur de la dernière opération

$user = $db->debug()->select(&#39;user&#39;, &#39;*&#39;); 
//SELECT "name","age" FROM "user" WHERE "age" <= 20
Copier après la connexion

log() renvoie tout Les instructions de requête SQL et n'affectent pas l'exécution normale de la requête

$db->select(&#39;user3&#39;, &#39;*&#39;); 
var_dump($db->error());
Copier après la connexion

last_query() et log() sont similaires, mais renvoient uniquement la dernière instruction de requête SQL, ce qui n'affecte pas l'exécution normale de la requête

$db->select(&#39;user&#39;, &#39;*&#39;); 
var_dump($db->log());
Copier après la connexion

Lecture connexe
$db->select(&#39;user&#39;, &#39;*&#39;); 
var_dump($db->last_query());
Copier après la connexion

Pour PHP PDO Un résumé de la compréhension

Méthode PDO pour implémenter l'ajout, la suppression, la modification et la requête de base de données en php

php Utilisez pdo pour vous connecter à l'instance de base de données du serveur mssql

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