ORM オブジェクト リレーショナル マッピング、O (オブジェクト) オブジェクトはプロジェクト内のエンティティであり、より正確にはデータ モデルであり、永続クラスとも言えます。 R (Relation) リレーショナル データ、M (Mapping) マッピング。オブジェクトをリレーショナル データにマッピングし、リレーショナル データをオブジェクトにマッピングするプロセス。より直観的に理解すると、ORM は OOP 思考を使用して SQL ステートメントの追加、削除、変更、クエリを生成するということです。
PDO と比較して、ORM は SQL ステートメントを記述せずに迅速な開発プロジェクトに適しています。ここでは便利な ORM をいくつか紹介します。
Medoo
以下では例としてバージョン 1.0.2 を使用します。
環境要件
PHP 5.1以降、PHP 5.4以降を推奨し、PDOをサポートしています。
MySQL、MSSQL、SQLiteの少なくとも1つがインストールされています。
インストール方法
MedooはComposerのインストールと直接ダウンロードをサポートしています。
Composerを使用してインストール:
composer require catfan/Medoo composer update
直接ダウンロード:
https://github.com/catfan/Medoo/archive/master.zip
開始
Medooを導入してデータベースを構成:
<?php //使用Composer安装的这样引入 //require 'vendor/autoload.php'; // 直接下载的这样引入 require_once 'medoo.php'; // 初始化 $db = new medoo([ 'database_type' => 'mysql', 'database_name' => 'test', 'server' => 'localhost', 'username' => 'root', 'password' => '123456', 'charset' => 'utf8', //可选:端口 'port' => 3306, //可选:表前缀 'prefix' => '', // PDO驱动选项 http://www.php.net/manual/en/pdo.setattribute.php 'option' => [ PDO::ATTR_CASE => PDO::CASE_NATURAL ] ]);
SQLiteの場合:
$database = new medoo([ 'database_type' => 'sqlite', 'database_file' => 'my/database/path/database.db']);
CURD
クエリ (読み取り):
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] 查询条件
例:
$user = $db->select('user', '*'); //返回所有数据 $user = $db->get('user', '*'); //返回一条数据 $user = $db->select('user','*', array('name ' => 'joy')); $user = $db->select('user','name', array('age[>] ' => 20)); $user = $db->select('user',['name','age'], array('age[<=] ' => 20));
追加 (作成):
insert($table, $data)
例:
$db->insert('user', array('name'=> 't3', 'age'=>22)); //返回自增id
注: データにサブ配列が含まれる場合、それらはシリアル化されます( ) シリアル化するには、json_encode() を使用して JSON として保存できます。
update($table, $data, $where)
トランザクションメカニズム
$db->update('user', array('name'=> 't5'), array('id'=> 23)); //返回受影响的行数
delete($table, $where)
PDO を直接使用する
Medoo は PDO に基づいているため、PDO インスタンスを直接呼び出すことができます。 PDO インスタンスを取得します:$db->update('user', array('id'=> 23)); //返回受影响的行数
2.PDO::commit — トランザクションをコミットします3.PDO::__construct — データベース接続を表す PDO インスタンスを作成します4.PDO::errorCode — データベースを取得しますハンドルの最後の操作に関連する SQLSTATE5.PDO::errorInfo - エラー情報を取得します
6.PDO::exec - SQL ステートメントを実行し、影響を受ける行の数を返します7.PDO::getAttribute - データベース接続プロパティを取得します
*8.PDO::getAvailableDrivers — 利用可能なドライバーの配列を返します (理解してください)*9.PDO::inTransaction — トランザクション内かどうかを確認します (理解してください) 10.PDO::lastInsertId — ID を返しますまたは、最後に挿入された行のシーケンス値11.PDO::prepare — SQL 前処理を作成し、PDOStatement オブジェクトを返します
12.PDO::query — クエリ SQL ステートメントを実行し、PDOStatement オブジェクトを返すために使用されます13.PDO::quote — SQL文字列に一重引用符を追加します
14.PDO::rollBack — トランザクションをロールバックします15.PDO::setAttribute — 属性を設定します
例:$db->has('user', array('id'=> 23)); //记录是否存在 $db->count('user', array('id[>]'=> 23));//统计 $db->max('user', 'age', array('gender'=> 1));//最大值 $db->min('user', 'age', array('gender'=> 2)); //最小值 $db->avg('user', 'age', array('gender'=> 2)); //平均值 $db->sum('user', 'age', array('gender'=> 2)); //求和
$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; } });
//查询 $data = $db->query("SELECT * FROM user")->fetchAll(); print_r($data); //删除 $db->query("DELETE FROM user where name='t5' ");
$pdo = $db->pdo;
$stmt = $pdo->query('select * from user limit 2'); //返回一个PDOStatement对象 //$row = $stmt->fetch(); //从结果集中获取下一行,用于while循环 $rows = $stmt->fetchAll(); //获取所有 print_r($rows);
$pdo->beginTransaction();//开启事务处理 try{//PDO预处理以及执行语句... $pdo->commit();//提交事务 }catch(PDOException $e){ $pdo->rollBack();//事务回滚 //相关错误处理 throw $e; }
関連書籍
PHP PDO についての概要 データベースの追加、削除、変更、クエリを実装するための PHP の PDO メソッドphp で使用するものPDO で mssql サーバー データベース インスタンスに接続します
以上がPHP はデータベース操作に ORM を使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。