2012-03-02 3 views
-1

saveAll 트랜잭션의 관련 모델에 데이터를 저장하려는 모델을 가져올 수 있습니까? 예를 들어, 사용자가 많은 목표를 가지고 있고 전화를 걸면;관련 모델에서 saveAll 호출을 시작하는 모델을 얻는 방법

$this->User->saveAll($data); 

사전 정의 된 attritbute, 메소드 또는 메커니즘을 사용하여 목표 모델 클래스에서 모델 사용자를 얻을 수 있습니까?

미리 감사드립니다. Roland.

편집 : 그림 모델과 게시물 (블로그)이 해당 모델과 함께있는 가상 상황을 가정하십시오. 이 두 가지 모두에 대해 주석을 달 수 있습니다. 따라서 각 모델에 대해 별도의 주석 모델을 작성하는 대신 하나의 중앙 Comment 모델을 작성합니다. 연결은 다음과 같을 수 있습니다.

//In the Picture model 
    var $hasMany = array(
`` 'Comment' => array(
     'className' => 'Comment', 
     'foreignKey' => 'picture_id', 
     'conditions' => array('Comment.objectType' => 'picture') 
    )` 
    ); 

포스트 모델에 대한 연관성은 비슷합니다.

'conditions' => array('Comment.objectType' => 'post') 

이러한 모델을 사용하면 이러한 모델 중 하나를 쿼리하면 objectType 필드를 사용하여 해당 테이블의 주석을 DB 테이블에서 검색합니다.

내가 뭔가를 할 수 있다면;

$this->Picture->saveAll($data); 

, 또는 잘 구조화는 $ 데이터 배열

$this->Post->saveAll($data); 

과 댓글 부분을 포함하는이 절약 거래 도중의 어떤 시점에서, 저장 될 데이터는 코멘트를 테이블에 저장됩니다 Comment 모델을 통해. 내가 원하는 것은 그것이 Comment 모델의 beforeSave 메서드에 주석을 저장하려고 시도하는 Picture 모델이라는 것을 알 수 있다는 것입니다.

+0

에서 GoalModel

function myCrazyFunc() { //crazy stuff happens here } 

에서 UserModel

var $hasMany = array('Goal'); 

에서

는 명확히하기 위해 - 당신은 그것을 확인하고 싶은 것이 저장하려고 사용자 데이터 이외의 데이터 - 해당 데이터/모델에 따라 무언가를 수행하거나 기능을 실행하십시오. Y/n? – Dave

+0

질문을 명확히 할 수 있습니까? 당신이하려는 일의 예를 들어주십시오. 나는 그것이 귀하의 질문에 투표가 내려진 이유라고 생각합니다. 당신이 묻고있는 것이 명확하지 않습니다. –

답변

0

CakePHP를 사용하면 컨트롤러에있는 동안 hasMany를 사용하여 모델을 연결하면 해당 모델에 액세스 할 수 있습니다. UsersController

$this->Goal->myCrazyFunc(); 
//more stuff 
$this->User->saveAll($data); 
관련 문제