2012-04-12 5 views
1

관련 모델의 데이터를 현재 로그인 한 사용자에게 받으려고합니다. 이 내 현재 사용자 모델 :CakePHP : 로그인 한 사용자의 관련 객체 가져 오기

class User extends AppModel { 
    public $name = 'User'; 

    public $hasMany = array(
     'Website' => array(
      'className' => 'Website', 
      'foreignKey' => 'user_id' 
     ) 
    ); 
} 

그리고 이것은 사용자 모델에 연결된 웹 사이트 모델 :

class Website extends AppModel { 
    public $name = 'Website'; 
    public $belongsTo = array(
     'User' => array(
      'classname' => 'User', 
      'foreignKey' => 'user_id' 
     ) 
    ); 
} 

내가 로그인 한 사용자의 I 돈의 웹 사이트를 얻을려고

DB 요청 조건에서 웹 사이트의 user_id를 정적 인 방식으로 설정하려고합니다. 그래서 협회를 사용하려고 시도했습니다.

public function beforeFilter() { 
    parent::beforeFilter(); 
    $this->Website->User->id = $this->Auth->user('id'); 
    // OR 
    $this->Website->User->set($this->Auth->user()); 
} 

public function index() { 
    $this->set('websites', $this->Website->find('all')); 
} 

올바른 user_id가있는 웹 사이트가 아닌 모든 웹 사이트를 반환합니다.

내가 제안하는 방법대로 할 수 있습니까? 그렇다면 내가 뭘 잘못하고 있니?

감사합니다.

답변

1

Model-> find ('all')를 사용하면 해당 모델의 모든 레코드를 검색합니다.

belongsTo 관계를 사용하여 사용자가 (find->를 사용하여) 검색하면 Cake는 동일한 콜렉션의 웹 사이트를 검색합니다. 인증 처리 방법에 따라 사용자 세션이 시작된 이래로 해당 데이터가있을 수 있습니다.

+0

좋은 해결책 인 것 같습니다. 유일한 문제는 Cake가 이제 1 대신에 2 개의 쿼리를 수행해야한다는 것입니다. ( – user1013338

+0

belongsTo 관계를 사용하면 Cake는 하나의 쿼리 만 관련 테이블에 자동으로 결합시킨다. – pollirrata

+0

Cake만이 하나의 쿼리를 수행 할 수 있도록 컨트롤러에서 belongsTo 연결을 올바르게 사용하는 방법에 대한 예제를 제공 할 수 있습니까? – user1013338

관련 문제