>  기사  >  백엔드 개발  >  PHP는 데이터베이스 작업에 ORM을 사용합니다.

PHP는 데이터베이스 작업에 ORM을 사용합니다.

*文
*文원래의
2017-12-21 15:56:342933검색

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 &#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)

예:

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

삭제:

delete($table, $where)

예:

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

where

A 집계 쿼리

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

위 메소드는 모두 관련 쿼리인 두 번째 매개변수인 $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=&#39;t5&#39; ");

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(&#39;select * from user limit 2&#39;); //返回一个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(&#39;user&#39;, &#39;*&#39;); 
//SELECT "name","age" FROM "user" WHERE "age" <= 20

error()는 마지막 작업의 오류 메시지

$db->select(&#39;user3&#39;, &#39;*&#39;); 
var_dump($db->error());

log()는 쿼리의 정상적인 실행에 영향을 주지 않고 모든 SQL 쿼리 문을 반환합니다.

$db->select(&#39;user&#39;, &#39;*&#39;); 
var_dump($db->log());

last_query()는 log()와 유사하지만 정상적인 쿼리 실행에 영향을 주지 않고 마지막 SQL 쿼리 문만 반환합니다. 쿼리 실행

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

관련 읽기

PHP PDO에 대한 일부 이해 요약

데이터베이스 추가, 삭제, 수정 및 쿼리를 구현하는 PHP의 PDO 메서드

php 사용 mssql 서버 데이터베이스 인스턴스에 연결하는 pdo

위 내용은 PHP는 데이터베이스 작업에 ORM을 사용합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.