thinkphp에서 여러 데이터를 쿼리하는 방법: 1. "$Model->table('think_blog blog, think_type type')"과 같은 구문을 사용하여 Table 메서드를 사용하여 여러 테이블을 쿼리합니다. 쿼리의 경우 코드는 "$Model->join('work ON Artist.id = work.artist_id')"와 같습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, ThinkPHP 버전 5, Dell G3 컴퓨터.
thinkphp에서 여러 데이터를 쿼리하는 방법은 무엇입니까?
THINKPHP 매체 관련 쿼리(다중 테이블 쿼리)
THINKPHP 매체 관련 쿼리(다중 테이블 쿼리)는 table() 메서드 또는 조인 메서드를 사용할 수 있습니다. 예를 참조하세요.
1 테이블 메서드: 수행할 작업을 정의합니다. 데이터 테이블의 이름은 현재 작업에 대한 데이터 테이블의 이름을 동적으로 변경할 수 있습니다. 예를 들어 접두사를 포함하여 데이터 테이블의 전체 이름을 써야 합니다. :
$Model->Table('think_user user') ->where('status>1') ->select(); $Model->table('think_blog blog,think_type type') ->where('blog.typeid=type.id') ->field('blog.id as id,blog.title,blog.content,type.typename as type') ->order('blog.id desc' ) ->limit(5) ->select();
Table 메소드의 매개변수는 문자열과 배열을 지원합니다. 배열 모드에서의 사용법:
$Model->Table(array('think_user'=>'user','think_group'=>'group')) ->where('status>1') ->select();
배열 정의를 사용하면 테이블 이름과 키워드 간의 충돌로 인한 오류를 피할 수 있다는 장점이 있습니다.
참고: 테이블 메서드가 정의되지 않은 경우 기본적으로 현재 모델에 해당하거나 정의된 데이터 테이블을 자동으로 가져옵니다.
2. 조인 메서드: 쿼리 조인 지원 조인 메서드의 매개 변수는 문자열과 배열을 지원하며 조인 메서드는 일관된 작업에서 여러 번 호출할 수 있는 유일한 메서드입니다. 예:
$Model->join('work ON artist.id = work.artist_id') ->join('card ON artist.card_id = card.id') ->select(); //Left Join $Model->table('user U') ->join('news N on U.id=N.cid') ->field('U.*,N.*') ->order('id desc') ->limit('8') ->findall();
기본적으로 LEFT JOIN 방법이 사용됩니다. 다른 JOIN 방법을 사용해야 하는 경우
$Model->join('RIGHT JOIN work ON artist.id = work.artist_id') ->select(); //Right Join $Model->table('user U') ->join(array('right','news N on U.id=N.cid')) ->field('U.*,N.*') ->order('id desc') ->limit('8') ->findall();
로 변경할 수 있습니다. 조인 방법의 매개 변수가 배열인 경우 조인 방법은 다음과 같습니다. 한 번만 사용되며 문자열 방식과 혼합하여 사용할 수 없습니다.
$Model->join(array(' work ON artist.id = work.artist_id', 'card ON artist.card_id = card.id')) ->select()
이러한 일관된 작업 방법을 사용하면 데이터 쿼리의 코드 명확성과 개발 효율성을 효과적으로 향상시킬 수 있습니다.
연속적으로 실행되는 SQL 문을 보는 방법:
echo $Model->getLastSql(); //打印一下SQL语句,查看一下
예제 2:
1, table()
$list = $user->table('user_status stats, user_profile profile')->where('stats.id = profile.typeid')->field('stats.id as id, stats.display as display, profile.title as title,profile.content as content')->order('stats.id desc' )->select();
2.1, Join()2 table query
$user = new Model('user'); $list = $user->join('RIGHT JOIN user_profile ON user_stats.id = user_profile.typeid' );
2.2, Join() 다중 테이블 질의
$list = $Form->join('think_sort ON think_form.sort_id = think_sort.sort_id' )->join('think_brand ON think_form.brand_id = think_brand.brand_id' )->select();
3. 네이티브 쿼리
$Model = new Model(); $sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by a.id '.$sort.' limit '.$p->firstRow.','.$p->listRows; $voList = $Model->query($sql);
추천 학습: "thinkPHP 비디오 튜토리얼"
위 내용은 thinkphp에서 여러 데이터를 쿼리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!