2013-06-06 5 views
0

우리는 3 개의 테이블, 게시물, 사용자 및 이미지가 있다고 가정 해 보겠습니다. 게시물이 사용자 테이블과 관련이 있고 이미지가 사용자 테이블과 관계가있어 게시물이 사용자에게 속하고 이미지가 사용자에게 속하는 경우Yii 다른 모델을 사용하여 테이블에 가입 관계

Post { 
    post_id 
    user_id 
} 

Users { 
    user_id 
} 

Images { 
    image_id 
    user_id 
} 

이제 Yii에서 관계를 모델에 정의 할 수 있습니다. 나는 '과'기능을 사용하여이 CDbCriteria를 조회 할 수있는 DBCriteria를 사용하여, YII 지금

<?php 

class Users extends CModel { 
    public function relations() { 
     'images' => array(self::HAS_ONE, 'Images', 'user_id') 
     'posts' => array(self::HAS_MANY, 'Posts', 'user_id') 
    } 
} 

class Images extends CModel { 
    public function relations() { 
     'user' => array(self::HAS_ONE, 'Users', 'user_id') 
    } 
} 

class Posts extends CModel { 
    public function relations() { 
     'user' => array(self::HAS_ONE, 'Users', 'user_id') 
    } 
} 

: 나는과 같이 설정 한 관계를 가지고있다. 내 질문은 포스트 모델에서 쿼리하고 사용자 모델 내부의 관계를 사용하여 사용자 이미지를 얻는 방법입니다.

예 :

CActiveDataProvider('Posts', array(
      'criteria'=>array(
       'with' => array('users', 'Users.images'), 
      ), 
      'pagination'=>array(
       'pageSize'=>20, 
      ), 
     )); 

YII이 달성의 방법이 있나요?

+0

내가 게시 한 코드가 작동하지 않는다고 생각합니다. 'Posts'와'Images'의'user' 관계는'BELONGS_TO' 여야합니다. –

+0

허락을 받았지만 예제를 흉내 냈습니다.하지만 아이디어는 다른 모델의 조인과 동일하게 유지됩니다. –

+0

글쎄, 차이가 있습니다. 실제로 'HAS_ONE'이라면 [through] (http://www.yiiframework.com/doc/guide/1.1/en/database.arr#relational-query-withthroughthrough) 기능을 사용할 수 있습니다. 하지만 'BELONGS_TO'와 (과) 함께 작동하지 않습니다. –

답변

1

당신은 항상 images 모델에 가입 할 Users 모델에서의 DefaultScope을 사용할 수 있습니다 :이 당신을 위해 '도현 ...'순간 있다고 생각

public function defaultScope() 
{ 
    return array(
     'with'=> array("images") 
    ); 
} 
0

하지만, 사용자 모델의 관계 게시물 모델의 사용자 이름은 사용자가 아닌 사용자입니다. with() 함수는 모델이 아닌 관계를 참조합니다.