tp 5.1 프레임 워 크 데이터베이스 서브 조회 조작 실례 분석

본 고의 실례 는 tp 5.1 프레임 워 크 데이터베이스 서브 조회 조작 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
먼저 구조 자 조회 SQL 은 다음 세 가지 방식 으로 하위 조 회 를 구축 할 수 있 습 니 다.
fetchSql 방법 사용 하기
fetchSql 방법 은 검색 을 하지 않 고 구 축 된 SQL 문 구 를 되 돌려 주 는 것 을 의미 하 며 지원select뿐만 아니 라 모든 CURD 검색 을 지원 합 니 다.

$subQuery = Db::table('think_user')
 ->field('id,name')
 ->where('id', '>', 10)
 ->fetchSql(true)
 ->select();

생 성 된 subQuery 결 과 는:

SELECT `id`,`name` FROM `think_user` WHERE `id` > 10 
buildSql 구조 서브 조회 사용 하기

$subQuery = Db::table('think_user')
 ->field('id,name')
 ->where('id', '>', 10)
 ->buildSql();

생 성 된 subQuery 결 과 는:

( SELECT `id`,`name` FROM `think_user` WHERE `id` > 10 )

buildSql 방법 을 호출 한 후 실제 조회 작업 을 하지 않 고 이번 조회 의 SQL 문 구 를 생 성 합 니 다(헷 갈 리 지 않도록 SQL 양쪽 에 괄호 를 추가 합 니 다).그리고 저 희 는 후속 조회 에서 직접 호출 합 니 다.
그리고 하위 조회 로 새로운 조 회 를 구성 합 니 다.

Db::table($subQuery . ' a')
 ->where('a.name', 'like', 'thinkphp')
 ->order('id', 'desc')
 ->select();

생 성 된 SQL 문 구 는 다음 과 같 습 니 다.

SELECT * FROM ( 
 SELECT `id`,`name` FROM `think_user` WHERE `id` > 10 ) a 
WHERE 
 a.name LIKE 'thinkphp' 
ORDER BY 
 `id` 
desc

폐쇄 구조 서브 조회 사용IN/NOT INEXISTS/NOT EXISTS같은 조 회 는 폐쇄 를 하위 조회 로 직접 사용 할 수 있다.예 를 들 어:

Db::table('think_user')
 ->where('id', 'IN', function ($query) {
  $query->table('think_profile')->where('status', 1)->field('id');
 })
 ->select();

생 성 된 SQL 문 구 는?

SELECT * FROM `think_user` 
WHERE `id` IN ( SELECT `id` FROM `think_profile` WHERE `status` = 1 )

Db::table('think_user')
 ->whereExists(function ($query) {
  $query->table('think_profile')->where('status', 1);
 })->find();

생 성 된 SQL 문 구 는?

SELECT * FROM `think_user` 
WHERE EXISTS ( SELECT * FROM `think_profile` WHERE `status` = 1 ) 
thinkpHP 와 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,ThinkpHP 입문 강좌,thinkpHP 템 플 릿 조작 기법 요약,ThinkPHP 상용 방법 총화,codeigniter 입문 강좌,CI(CodeIgniter)프레임 워 크 진급 강좌Zend FrameWork 프레임 워 크 입문 강좌.
본 고 는 ThinkPHP 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기