2014-07-23 2 views
0

내가 좋아하는 이벤트에 관련된 정보가 포함 된 이벤트 양식을 가지고있다. 요구 사항은 동일한 유형의 이벤트를 여러 사용자가 저장할 수 있으므로 양식에서 사용자 목록도 수신한다는 것입니다. 지금 그게 불가능 모델의 기본 저장 기능을 사용할 수있게하고 나는 다음과 같은 코드가 그 이유 : 모든절약 여러 레코드 적절하게 CakePHP의 방법

function saveNotRepeatedEvents($event, $users){ 

    foreach($users as $user){ 

      $event['Event']['user_id'] = $user; 
      $this->create(); 
      $this->save($event); 
    } 

     return true; 
    } 

첫째, 그것은 거래를 허용하지 않으며, 나는 그것을 할 수있는 느낌이 "cakePHP 방식"처럼 좋지만 연구 중에는 아무 것도 찾을 수 없습니다.

그래서이 경우 트랜잭션을 도입하는 방법이 주요 문제입니다. 그러나 더 많은 cakePHP 방법을 만드는 방법에 대한 도움이나 지침은 많은 도움이 될 것입니다.

+0

아무 것도 찾을 수 없다면 연구에 많은 노력을 기울이지 않아도됩니다. ** [요리 책> 모델> 데이터 저장] (http://book.cakephp.org/2.0/en/models /saving-your-data.html#model-saveassociated-array-data-null-array-options-array)** – ndm

+0

물론 제가이 문제를 해결했지만 문제가 해결되지 않았습니다. 나는 이벤트와 함께 사용자를 저장하고 싶지 않다. 이벤트 만 저장하고 싶지만 문제는 모든 이벤트에 user_id가 있어야한다는 것입니다. 그러나 양식에서 하나 대신 사용자 ID 배열을 가져옵니다. – Domas

+1

죄송 합니다만, 질문을 잘못 읽었을 경우, 섹션을 [**'Model :: saveMany' **] (http://book.cakephp.org/2.0/en/models/saving) 섹션으로 이동하십시오. -your-data.html # model-savemany-array-data-null-array-options-array). 또한 다 대다 연관을 대신 사용해야하는 것처럼 들립니다. – ndm

답변

1

Model::saveAll($yourData)은 결국 데이터베이스 엔진이 트랜잭션을 지원하는 한 트랜잭션을 사용하게됩니다.

주요 아이디어는이 양식

$yourData = array(
    array('Event' => array('user_id' => 1)), 
    array('Event' => array('user_id' => 2)), 
); 

으로 배열로 $ yourData을 준비하는 것입니다 물론, 당신은 루프, 난 그냥 당신에게 주요 아이디어를 제공하고이 작업을 수행합니다.