FluentPDO는 PDO를 사용하는 PHP SQL 쿼리 빌더입니다. 자동으로 테이블 조인을 생성하는 스마트 조인 빌더를 갖춘 빠르고 가벼운 라이브러리입니다.
강력한 쿼리를 생성하기 위한 간편한 인터페이스
PDO와 호환되는 모든 데이터베이스 지원
적은 코드로 복잡한 SELECT, INSERT, UPDATE 및 DELETE 쿼리를 작성하는 기능
스마트 IDE에서 코드 완성 기능을 갖춘 매직 메소드에 대한 유형 힌트
FluentPDO의 안정적인 릴리스와 적극적으로 유지 관리됩니다. 공식적으로 PHP 7.3부터 PHP 8.0까지 지원하지만 이전 버전의 PHP 7에서도 작동할 수 있습니다.
FluentPDO의 레거시 릴리스입니다. 더 이상 지원되지 않으며 유지 관리되거나 업데이트되지 않습니다. 이 버전은 PHP 5.4~7.1에서 작동합니다.
이 버전은 Fluent를 처음부터 완전히 재작성한 버전입니다. 주요 장점은 쿼리 작성 시 메모리 사용량이 훨씬 적고 성능이 훨씬 뛰어나다는 것입니다. 또한 쿼리를 더 쉽게 읽고 유지 관리할 수 있도록 몇 가지 추가 제한 사항을 적용합니다. 문서화 또한 매우 일반적인 요청이었으며 버전 3은 개발과 함께 완전히 문서화되고 있습니다. 세부정보 및 측정항목이 제공되면 게시될 예정입니다.
Sitepoint - FluentPDO 시작하기
FluentPDO를 설치하는 기본 방법은 작곡가를 이용하는 것입니다.
composer.json
파일에 다음 줄을 추가하세요.
"require": { ... "envms/fluentpdo": "^2.2.0" }
composer update
로 종속성을 업데이트하면 완료됩니다!
작곡가를 사용하지 않으려면 최신 릴리스를 다운로드하고 라이브러리 디렉터리에 Envms/FluentPDO
디렉터리를 만든 다음 이 저장소를 여기에 놓습니다. 마지막으로 다음을 추가합니다.
'[lib-dir]/Envms/FluentPDO/src/Query.php'가 필요합니다.
신청서 상단으로 이동하세요. 참고: 소스 코드를 변경하지 않고 FluentPDO를 사용하려면 자동 로더가 필요합니다.
새 PDO 인스턴스를 만들고 인스턴스를 FluentPDO에 전달합니다.
$pdo = 새 PDO('mysql:dbname=fluentdb', '사용자', '비밀번호');$fluent = 새 EnvmsFluentPDOQuery($pdo);
그러면 쿼리 작성이 빠르고 쉽습니다.
$query = $fluent->from('댓글') ->where('article.published_at > ?', $date) ->orderBy('published_at DESC') ->한계(5);
그러면 아래 쿼리가 작성됩니다.
댓글 선택.*FROM commentLEFT JOIN 기사 ON 기사.id = comment.article_idWHERE 기사.published_at > ?ORDER BY 기사.published_at DESCLIMIT 5
선택 항목에서 데이터를 얻으려면 반환된 배열을 반복하면 됩니다.
foreach ($query를 $row로) {echo "$row['title']n"; }
아래의 전통적인 조인부터 시작해 보겠습니다.
$query = $fluent->from('기사') ->leftJoin('사용자 ON user.id = 기사.user_id') ->select('사용자 이름');
꽤 장황하고 똑똑하지도 않습니다. 테이블이 적절한 기본 및 외래 키 이름을 사용하는 경우 위의 이름을 다음과 같이 단축할 수 있습니다.
$query = $fluent->from('기사') ->leftJoin('사용자') ->select('사용자 이름');
그게 더 좋지만 이상적이지는 않습니다. 그러나 조인을 작성하지 않는 것이 훨씬 더 쉽습니다.
$query = $fluent->from('기사') ->select('사용자 이름');
정말 멋지죠? FluentPDO는 요청된 열 앞에 외부 테이블 이름을 추가하여 조인을 구축할 수 있습니다.
위의 세 가지 스니펫은 모두 완전히 동일한 쿼리를 생성합니다.
기사 선택.*, user.name FROM 기사 LEFT JOIN 사용자 ON user.id = 기사.user_id
마지막으로, 업무가 완료되는 즉시 리소스를 확보하는 것이 항상 좋은 생각입니다.
$fluent->close();
$query = $fluent->from('article')->where('id', 1)->fetch();$query = $fluent->from('user', 1)->fetch(); // 기본 키로 한 행을 선택하는 경우 더 짧은 버전
$values = array('title' => '기사 1', 'content' => '콘텐츠 1');$query = $fluent->insertInto('article')->values($values)->execute( );$query = $fluent->insertInto('article', $values)->execute(); // 더 짧은 버전
$set = array('published_at' => new FluentLiteral('NOW()'));$query = $fluent->update('article')->set($set)->where('id', 1 )->execute();$query = $fluent->update('article', $set, 1)->execute(); // 기본 키로 한 행을 업데이트하는 경우 더 짧은 버전
$query = $fluent->deleteFrom('article')->where('id', 1)->execute();$query = $fluent->deleteFrom('article', 1)->execute(); // 기본 키로 한 행을 삭제하는 경우 더 짧은 버전
참고 : INSERT, UPDATE 및 DELETE 쿼리는 ->execute()
호출한 후에만 실행됩니다.
Apache 2.0 또는 GPL 2.0 라이센스에 따라 상업용 및 비상업적 용도로 무료입니다.