> php教程 > PHP开发 > Yii의 관계 데이터 상관 쿼리 및 통계 함수 사용법에 대한 자세한 설명

Yii의 관계 데이터 상관 쿼리 및 통계 함수 사용법에 대한 자세한 설명

高洛峰
풀어 주다: 2016-12-30 16:15:09
원래의
1351명이 탐색했습니다.

이 글의 예시에서는 Yii의 관계 데이터 상관 쿼리와 통계 함수의 사용법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

관련 쿼리, Yii는 소위 통계 쿼리(또는 집계 쿼리)도 지원합니다. 게시물별 댓글 수, 상품별 평균 평점 등 연관 객체에 대한 집계된 정보를 조회하는 것을 말합니다. 통계 쿼리는 HAS_MANY(예: 게시물에 댓글이 많음) 또는 MANY_MANY(예: 게시물이 여러 카테고리에 속하고 카테고리에 게시물이 많음)와 연결된 개체에 대해서만 수행됩니다.

통계 쿼리 수행은 앞서 설명한 상관 쿼리와 매우 유사합니다. 먼저 CActiveRecord의 Relations() 메서드에서 통계 쿼리를 선언해야 합니다.

class Post extends CActiveRecord
{
  public function relations()
  {
    return array(
      'commentCount'=>array(self::STAT, 'Comment', 'post_id'),
      'categoryCount'=>array(self::STAT, 'Category', 'post_category(post_id,category_id)'),
    );
  }
}
로그인 후 복사

관련 쿼리 네임스페이스

관련 쿼리도 네임스페이스를 사용하여 실행할 수 있습니다. 두 가지 형태가 있습니다. 첫 번째 형태에서는 네임스페이스가 메인 모델에 적용됩니다. 두 번째 형식에서는 네임스페이스가 관계형 모델에 적용됩니다.

다음 코드는 메인 모델에 네임스페이스를 적용하는 방법을 보여줍니다.

$posts=Post::model()->published()->recently()->with('comments')->findAll();
로그인 후 복사

비연관 쿼리와 매우 유사합니다. 유일한 차이점은 네임스페이스 뒤에 with() 호출을 사용한다는 것입니다. 이 쿼리는 최근 게시된 게시물과 해당 댓글을 반환해야 합니다.

다음 코드는 연관된 모델에 네임스페이스를 적용하는 방법을 보여줍니다.

$posts=Post::model()->with('comments:recently:approved')->findAll();
로그인 후 복사

위 쿼리는 모든 게시물과 검토된 댓글을 반환합니다. 댓글은 연결 이름을 참조하는 반면, 최근 승인된 댓글은 Comment 모델 클래스에 선언된 네임스페이스를 참조합니다. 연관 이름과 네임스페이스는 콜론으로 구분해야 합니다.


네임스페이스는 CActiveRecord::relations()에 선언된 연관 규칙의 with 옵션에서도 지정할 수 있습니다. 아래 예에서 $user->posts에 액세스하면 이 게시물에 대해 검토된 모든 댓글이 반환됩니다.

class User extends CActiveRecord
{
  public function relations()
  {
    return array(
      'posts'=>array(self::HAS_MANY, 'Post', 'author_id', 'with'=>'comments:approved'),
    );
  }
}
로그인 후 복사

이 글이 Yii 프레임워크를 기반으로 하는 모든 분들의 PHP 프로그램 설계에 도움이 되기를 바랍니다.

Yii의 관계 데이터 상관 쿼리 및 통계 함수 사용법에 대한 자세한 설명은 PHP 중국어 사이트의 관련 기사를 참고해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿