>PHP 프레임워크 >ThinkPHP >thinkphp5에서 Join의 사용법은 무엇입니까

thinkphp5에서 Join의 사용법은 무엇입니까

WBOY
WBOY원래의
2022-04-25 11:01:165478검색

thinkphp5에서 조인은 두 개 이상의 테이블에 있는 열 간의 관계를 기반으로 데이터를 쿼리하는 데 사용됩니다. 이는 일관된 작업 방법 중 하나이며 반환되는 결과는 모델 개체이며 구문은 "join( 연결할 테이블 이름과 별칭 [연결 조건 [연결 유형]])'입니다.

thinkphp5에서 Join의 사용법은 무엇입니까

이 문서의 운영 환경: Windows 10 시스템, ThinkPHP 버전 5, Dell G3 컴퓨터.

thinkphp5에서 조인의 사용법은 무엇입니까?

JOIN 방법도 일관성 있는 작업 방법 중 하나로, 두 개 이상의 테이블에 있는 열 간의 관계를 기반으로 데이터를 쿼리하는 데 사용됩니다.

Explanation

object join ( mixed join [, mixed $condition = null [, string $type = 'INNER']] )

Parameters

join: 연결할 (완전한) 테이블 이름과 별칭은 세 가지 쓰기 방법을 지원합니다.

  • 쓰기 방법 1: ['전체 테이블 이름 또는 하위 쿼리'=>'별칭' ]

  • 쓰기 2: '전체 테이블 이름 별명'

  • 쓰기 3: '데이터 테이블 접두어가 없는 테이블 이름'

조건: 연관 조건. 문자열이거나 배열일 수 있습니다. 배열인 경우 각 요소는 연관된 조건입니다.

유형: 연관 유형. 가능: INNER, LEFT, RIGHT, FULL, 대소문자를 구분하지 않음, 기본값은 INNER입니다.

반환 값: 모델 객체

join에는 일반적으로 다음과 같은 유형이 있습니다. 다양한 유형의 조인 작업이 반환된 데이터 결과에 영향을 미칩니다.

  • INNER JOIN: JOIN(기본 JOIN 유형)과 동일하며, 테이블에 일치하는 항목이 하나 이상 있으면 행을 반환합니다.

  • LEFT JOIN: 일치하는 항목이 없더라도 왼쪽 테이블의 모든 행을 반환합니다. 오른쪽 테이블

  • RIGHT JOIN: 왼쪽 테이블에 일치하는 항목이 없더라도 오른쪽 테이블의 모든 행 반환

  • FULL JOIN: 테이블 중 하나에 일치하는 항목이 있는 한 행 반환

예는 다음과 같습니다.

Db::table('think_artist')
->alias('a')
->join('think_work w','a.id = w.artist_id')
->join('think_card c','a.card_id = c.id')
->select();
Db::table('think_artist')
->alias('a')
->join('__WORK__ w','a.id = w.artist_id')
->join('__CARD__ c','a.card_id = c.id')
->select();
$join = [
    ['think_work w','a.id=w.artist_id'],
    ['think_card c','a.card_id=c.id'],
];
Db::table('think_user')->alias('a')->join($join)->select();

위 세 가지 작성 방법은 동일한 효과를 가지며 __WORK__ 및 __CARD__는 최종 분석 중에 think_work 및 think_card로 변환됩니다. 참고: '_테이블 이름_' 중간에 있는 테이블 이름은 대문자여야 합니다

별칭을 사용하지 않으려면 후속 조건에서 테이블의 전체 이름을 사용해야 합니다. 다음 메소드

Db::table('think_user')->join('__WORK__','__ARTIST__.id = __WORK__.artist_id')->select();

기본적으로 INNER JOIN 메소드가 사용됩니다. 다른 JOIN 메소드를 사용해야 하는 경우에는

Db::table('think_user')->alias('a')->join('word w','a.id = w.artist_id','RIGHT')->select();
로 변경할 수 있습니다.

테이블 이름은 하위 쿼리일 수도 있습니다

$subsql = Db::table('think_work')->where(['status'=>1])->field('artist_id,count(id) count')->group('artist_id')->buildSql();
Db::table('think_user')->alias('a')->join([$subsql=> 'w'], 'a.artist_id = w.artist_id')->select();

buildSql에서 반환된 문에는 ( ), 양쪽 끝에 ()를 추가할 필요가 없습니다.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 thinkphp5에서 Join의 사용법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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