ORM 객체 관계형 매핑, O(Object) 객체는 프로젝트의 엔터티, 더 정확하게는 지속성 클래스라고도 할 수 있는 데이터 모델입니다. R(관계) 관계형 데이터, M(매핑) 매핑, 개체를 관계형 데이터에 매핑하고 관계형 데이터를 개체에 매핑하는 프로세스입니다. 보다 직관적으로 이해하면 ORM은 OOP 사고를 사용하여 SQL 문을 추가, 삭제, 수정 및 쿼리한다는 것입니다.
PDO에 비해 ORM은 SQL 문을 작성하지 않고 빠른 개발 프로젝트에 더 적합합니다. 다음은 몇 가지 유용한 ORM입니다.
Medoo
다음은 버전 1.0.2를 예로 사용합니다.
환경 요구 사항
PHP 5.1+, PHP 5.4+ 권장 및 PDO 지원.
MySQL, MSSQL, SQLite 중 하나 이상이 설치되어 있습니다.
설치 방법
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)
예:
$db->update('user', array('id'=> 23)); //返回受影响的行数
where
A 집계 쿼리
$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)); //求和
위 메소드는 모두 관련 쿼리인 두 번째 매개변수인 $join을 지원합니다.
트랜잭션 메커니즘
$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; } });
쿼리 사용
SQL을 직접 사용할 수 있습니다.
//查询 $data = $db->query("SELECT * FROM user")->fetchAll(); print_r($data); //删除 $db->query("DELETE FROM user where name='t5' ");
PDO 직접 사용하기
Medoo는 PDO 기반이므로 PDO 인스턴스를 직접 호출할 수 있습니다.
PDO 인스턴스 가져오기:
$pdo = $db->pdo;
다음으로 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 — 속성 설정
예:
$stmt = $pdo->query('select * from user limit 2'); //返回一个PDOStatement对象 //$row = $stmt->fetch(); //从结果集中获取下一行,用于while循环 $rows = $stmt->fetchAll(); //获取所有 print_r($rows);
pdo 트랜잭션:
$pdo->beginTransaction();//开启事务处理 try{//PDO预处理以及执行语句... $pdo->commit();//提交事务 }catch(PDOException $e){ $pdo->rollBack();//事务回滚 //相关错误处理 throw $e; }
DEBUG
debug( ) 사용 최종 SQL 문 인쇄
select, get, insert, update 및 기타 메서드 앞에 debug() 메서드를 추가하여 SQL 문을 인쇄하면 프로그램이 더 이상 실행되지 않습니다.
$user = $db->debug()->select('user', '*'); //SELECT "name","age" FROM "user" WHERE "age" <= 20
error()는 마지막 작업의 오류 메시지
$db->select('user3', '*'); var_dump($db->error());
log()는 쿼리의 정상적인 실행에 영향을 주지 않고 모든 SQL 쿼리 문을 반환합니다.
$db->select('user', '*'); var_dump($db->log());
last_query()는 log()와 유사하지만 정상적인 쿼리 실행에 영향을 주지 않고 마지막 SQL 쿼리 문만 반환합니다. 쿼리 실행
$db->select('user', '*'); var_dump($db->last_query());
관련 읽기
데이터베이스 추가, 삭제, 수정 및 쿼리를 구현하는 PHP의 PDO 메서드
php 사용 mssql 서버 데이터베이스 인스턴스에 연결하는 pdo
위 내용은 PHP는 데이터베이스 작업에 ORM을 사용합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!