thinkphp5에서 조인은 두 개 이상의 테이블에 있는 열 간의 관계를 기반으로 데이터를 쿼리하는 데 사용됩니다. 이는 일관된 작업 방법 중 하나이며 반환되는 결과는 모델 개체이며 구문은 "join( 연결할 테이블 이름과 별칭 [연결 조건 [연결 유형]])'입니다.
이 문서의 운영 환경: Windows 10 시스템, ThinkPHP 버전 5, Dell G3 컴퓨터.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!