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

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

*文
*文original
2017-12-21 15:56:342933parcourir

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

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

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

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] 查询条件

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

Créer :

insert($table, $data)

Exemple :

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

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)
Exemple :

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

Supprimer :

delete($table, $where)
Exemple :

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

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)); //求和
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;
    }
});

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

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

Utiliser DEBUG

$pdo->beginTransaction();//开启事务处理
    try{//PDO预处理以及执行语句...
        $pdo->commit();//提交事务
    }catch(PDOException $e){
    $pdo->rollBack();//事务回滚
    //相关错误处理
    throw $e;
}
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

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

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

Lecture connexe
$db->select(&#39;user&#39;, &#39;*&#39;); 
var_dump($db->last_query());

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!

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