ホームページ > バックエンド開発 > PHPチュートリアル > PHP はデータベース操作に ORM を使用します

PHP はデータベース操作に ORM を使用します

*文
リリース: 2023-03-18 08:34:01
オリジナル
2962 人が閲覧しました

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 &#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 ]
      ]);
ログイン後にコピー

SQLiteの場合:

$database = new medoo([    &#39;database_type&#39; => &#39;sqlite&#39;,    &#39;database_file&#39; => &#39;my/database/path/database.db&#39;]);
ログイン後にコピー

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(&#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));
ログイン後にコピー

追加 (作成):

insert($table, $data)
ログイン後にコピー

例:

$db->insert(&#39;user&#39;, array(&#39;name&#39;=> &#39;t3&#39;, &#39;age&#39;=>22)); //返回自增id
ログイン後にコピー

注: データにサブ配列が含まれる場合、それらはシリアル化されます( ) シリアル化するには、json_encode() を使用して JSON として保存できます。

update($table, $data, $where)
ログイン後にコピー
上記のメソッドはすべて、2 番目のパラメーターである $join (関連クエリ) をサポートしています。

トランザクションメカニズム

$db->update(&#39;user&#39;, array(&#39;name&#39;=> &#39;t5&#39;), array(&#39;id&#39;=> 23)); //返回受影响的行数
ログイン後にコピー
クエリを使用する

SQLを直接使用することができます。

delete($table, $where)
ログイン後にコピー

PDO を直接使用する

Medoo は PDO に基づいているため、PDO インスタンスを直接呼び出すことができます。

PDO インスタンスを取得します:

$db->update(&#39;user&#39;,  array(&#39;id&#39;=> 23)); //返回受影响的行数
ログイン後にコピー
次に、PDO オブジェクトのすべてのメソッドを使用できるようになります。

1.PDO::beginTransaction — トランザクションを開始します

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(&#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)); //求和
ログイン後にコピー

pdotransaction:
$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;
    }
});
ログイン後にコピー

Use DEBUG

debug()最後の SQL ステートメントを出力します

SQL ステートメントを出力するための select、get、insert、update などのメソッドの前に debug() メソッドを追加すると、プログラムは実行を続行できません:
//查询
$data = $db->query("SELECT * FROM user")->fetchAll();
print_r($data);
//删除
$db->query("DELETE FROM user where name=&#39;t5&#39; ");
ログイン後にコピー

error() は、最後の操作のエラー メッセージ
$pdo = $db->pdo;
ログイン後にコピー

log() は、クエリの通常の実行に影響を与えることなく、すべての SQL クエリ ステートメントを返します
$stmt = $pdo->query(&#39;select * from user limit 2&#39;); //返回一个PDOStatement对象
//$row = $stmt->fetch(); //从结果集中获取下一行,用于while循环
$rows = $stmt->fetchAll(); //获取所有
print_r($rows);
ログイン後にコピー

last_query() は、log() に似ていますが、通常の実行には影響せず、最後の SQL クエリ ステートメントのみを返しますクエリの実行
$pdo->beginTransaction();//开启事务处理
    try{//PDO预处理以及执行语句...
        $pdo->commit();//提交事务
    }catch(PDOException $e){
    $pdo->rollBack();//事务回滚
    //相关错误处理
    throw $e;
}
ログイン後にコピー

関連書籍

PHP PDO についての概要

データベースの追加、削除、変更、クエリを実装するための PHP の PDO メソッド

php で使用するものPDO で mssql サーバー データベース インスタンスに接続します

以上がPHP はデータベース操作に ORM を使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート