찾다
백엔드 개발PHP 튜토리얼PHP는 데이터베이스 작업에 ORM을 사용합니다.
PHP는 데이터베이스 작업에 ORM을 사용합니다.Dec 21, 2017 pm 03:56 PM
ormphp데이터 베이스

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으로 문의하세요.
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么查找字符串是第几位php怎么查找字符串是第几位Apr 22, 2022 pm 06:48 PM

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。

See all articles

핫 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 Hentai를 무료로 생성하십시오.

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경