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

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

Dec 21, 2017 pm 03:56 PM
orm php データベース

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

See all articles