>  기사  >  백엔드 개발  >  사용 분석_php 예제를 사용한 Yii 프레임워크 관련 쿼리

사용 분석_php 예제를 사용한 Yii 프레임워크 관련 쿼리

WBOY
WBOY원래의
2016-05-16 20:29:312087검색

이 글에서는 Yii 프레임워크에서 연관 쿼리의 사용법을 예시를 통해 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 방법은 다음과 같습니다.

Yii 프레임워크 관련 쿼리와 mysql 관련 쿼리의 차이점이 무엇인지 함께 살펴볼까요?

Yii 관련 검색어는 참으로 편리한 것인데, 대부분이 Ctrl c, Ctrl v 입니다. 이후 자세히 설명하는 글을 쓴 사람이 없는 것도 있습니다. 인터넷에 있는 많은 정보를 참조하고, 자료를 수집하고 제가 이해한 부분을 추가한 후, 초보자에게 개인적인 통찰력을 제공하기 위해 이 글을 썼습니다.

YII는 네 가지 유형의 관계를 지원합니다:

BELONGS_TO(속함): 테이블 A와 B 사이의 관계가 일대다인 경우 테이블 B는 테이블 A에 속합니다(예: Post는 User에 속함).
HAS_MANY(여러 개가 있음): 테이블 A와 B 사이의 관계가 일대다인 경우 A에는 B가 여러 개 있습니다(예: 사용자에게 Post가 여러 개 있음).
HAS_ONE(하나 있음): 이는 HAS_MANY의 특별한 경우입니다. A는 최대 하나의 B를 가질 수 있습니다(예: 사용자는 최대 하나의 프로필을 가질 수 있음).
MANY_MANY: 데이터베이스의 다대다 관계에 해당합니다. 대부분의 DBMS는 다대다 관계를 직접 지원하지 않기 때문에 다대다 관계를 일대다 관계로 분할하려면 관계 테이블이 필요합니다.

초보자들이 이것을 보고 정말 이해할 수 있을까요?

처음 학습을 시작했을 때 매우 어지러움을 느꼈습니다. 여러 번 테스트를 거쳐 매우 간단하게 설명하겠습니다.
기존 사용자 테이블은 user이고 블로그 테이블은 blog입니다. 블로그는 특정 사용자에게 속하며 해당 사용자는 여러 블로그를 게시하게 됩니다.
BELOONGS_TO:
컨트롤러

코드 복사 코드는 다음과 같습니다.
$blogs = $blog_model->with('b_user')- >찾기();

모델 여기서 모델은 blog_model을 나타냅니다
코드 복사 코드는 다음과 같습니다.
'b_user'=>array(self::BELONGS_TO, 'user ', '작가')

적용 범위: 블로그를 검색할 때 블로그 작성자를 찾아야 합니다.
b_user의 두 번째 매개변수: 하위 테이블의 테이블 이름, 세 번째 매개변수, 하위 테이블의 기본 키를 저장하는 데 사용되는 메인 테이블의 필드(블로그 테이블에서 사용자 테이블의 기본 키를 저장하는 데 사용되는 필드) .

HAS_ONE:
컨트롤러
코드 복사 코드는 다음과 같습니다.
$user_blog = $user_model->with('u_blog')- >찾기();

모델 여기서 모델은 user_model을 나타냅니다
코드 복사 코드는 다음과 같습니다.
'u_blog'=>array(self::HAS_ONE, 'blog ', '작가')

테스트해보니 작성자의 정보뿐 아니라 작성자의 블로그까지 검색이 되었습니다.
u_blog의 두 번째 매개변수: 하위 테이블 이름, 세 번째 매개변수, 메인 테이블의 기본 키를 저장하는 데 사용되는 하위 테이블의 필드(사용자 테이블의 기본 키를 저장하는 데 사용되는 블로그 테이블의 필드)

많은 수:
컨트롤러
코드 복사 코드는 다음과 같습니다.
$user_blogs = $user_model->with('u_blogs')- >찾기();

모델 여기서 모델은 user_model을 나타냅니다
코드 복사 코드는 다음과 같습니다.
'u_blogs'=>array(self::HAS_MANY, 'blog ', '작가')

테스트 결과 작성자의 정보뿐 아니라 작성자의 블로그 중 하나만 검색된 것이 아니라 작성자의 다른 블로그도 검색되었습니다.
u_blogs의 두 번째 매개변수: 하위 테이블 이름, 세 번째 매개변수, 메인 테이블의 기본 키를 저장하는 데 사용되는 하위 테이블의 필드(사용자 테이블의 기본 키를 저장하는 데 사용되는 블로그 테이블의 필드).

MANY_TO_MANY:
이건 아직 사용해본 적이 없고, 아예 사용하지 않을 것 같습니다. 테스트해보고 업데이트하겠습니다. . .

이제 Yii with의 가장 기본적인 사용법이 거의 설명되었는데, 궁금한 점이 없으신가요?
쿼리할 하위 테이블 필드를 지정하는 방법은 무엇입니까?
이 사용자의 모든 기사가 HAS_MANY에서 발견되었습니다. 기사 5개만 확인하고 싶다면 어떻게 해야 하나요?
...귀하의 질문을 기다리고 있습니다.
그럼 더 이상 고민하지 말고 첫 번째 문제를 해결해 보겠습니다
코드 복사 코드는 다음과 같습니다.
'u_blogs'=>array(self::HAS_MANY, 'blog ', '작성자','선택'=>'gid,제목,내용')

이거 드셔보시겠어요?
두 번째 질문
코드 복사 코드는 다음과 같습니다.
'u_blogs'=>array(self::HAS_MANY, 'blog ', '작성자','선택'=>'gid,title,content','조건'=>'u_blogs.gid=2')

완료!

나는 이 초보적인 설명을 읽고 나면 갑자기 이해하게 될 것이라고 믿습니다. 뭐든 처음이 어렵다는 말처럼 나머지는 한 눈에 아실 거라 믿습니다~~

다음 내용은 Yii 매뉴얼의 내용입니다:

지연 로드에 따라 다음 옵션을 사용할 수 있습니다.
'그룹': 문자열, GROUP BY 절. 기본값은 비어 있습니다. 열 참조 앞에 'relationName'이 붙어야 합니다. (예: 관계이름.나이). 이 옵션은 HAS_MANY 및 MANY_MANY 관계에만 적용됩니다.
'having': 문자열, HAVING 절. 기본값은 비어 있습니다. 열 참조 앞에 'relationName'이 붙어야 합니다. (예: 관계이름.나이). 이 옵션은 HAS_MANY 및 MANY_MANY 관계에만 적용됩니다.
'limit': 데이터 행 선택을 제한합니다. 이 옵션은 BEONGS_TO에는 적용되지 않습니다.
'오프셋': 데이터 행의 오프셋입니다. 이 옵션은 BEONGS_TO에는 적용되지 않습니다.
'through': 관련 데이터를 검색할 때 브리지 모델로 사용될 관계의 이름입니다. HAS_ONE 및 HAS_MANY로만 설정할 수 있습니다. 이 옵션은 버전 1.1.7부터 사용할 수 있습니다.

다음은 '게시물' 활동에 대해 기록된 관련 개체의 예입니다.

코드 복사 코드는 다음과 같습니다.
반환 배열(
'작성자'=>array(self::BEONGS_TO, '사용자', '작성자 ID'),
'comments'=>array(self::HAS_MANY, 'Comment', 'post_id', 'with'=>'author', 'order'=>'create_time DESC'),
'tags'=>array(self::MANY_MANY, '태그', 'post_tag(post_id, tag_id)', 'order'=>'name'),
);

이 글이 모든 분들의 Yii 프레임워크 프로그래밍 설계에 도움이 되기를 바랍니다.

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