2012-09-11 5 views
1

저는 설치 프로그램을 작성 중이므로 관련이없는 경우에도 여러 테이블 유형의 데이터를 다른 테이블에 저장해야합니다. 이상적으로 나는이 모든 것을 한꺼번에 돌보고 싶다. 여기에 내가 지금까지 가지고있는 간단한 내용이 있습니다.CakePHP에 비 관련 데이터 저장

여기 내 데이터를 저장하기위한 준비 과정에 케이크 배열이 있습니다.

$initialData = array(
    array('Option' => array('name' => 'version', 'value' => '1.0.0',)), 
    array('Option' => array('name' => 'non-version', 'value' => '1.0.2',)), 
    array('User' => array('username' => 'skyler', 'password' => 'hi',)), 
); 

그리고 다음을 시도해 보겠습니다. 단지 Option 행이 아닌 User 행을 저장

$this->Option->saveMany($initialData) 

. 생각?

참고 : 이것은 관련 데이터가 아닙니다. 옵션과 사용자는 연관되어 있지 않지만 동시에 저장해야합니다.

답변

2

$this->Option->saveMany은 단일 테이블에 대해 여러 레코드를 저장하기 때문에 작동합니다. 그러나 사용자가 옵션과 연결되어 있지 않으므로 데이터로 수행 할 작업을 알지 못합니다. $this->User->save($initialData)으로 전화해야합니다.

사용자 기록이 여러 개인 경우 $this->User->saveMany($initialData)으로 전화 할 수 있습니다.

$this->User->create()을 잊지 마세요.

+0

그래서 본질적으로 별도의 $ this-> Model-> save [Many]를 사용하여 각 테이블/모델에 대해 사용해야합니다. – alairock

+0

그들이 관련이 없다면 ... 예. –

0

보통 데이터베이스 테이블을 만들고 채우는 패키지로 SQL 스크립트를 제공합니다.

CakePHP에서 파일을 읽고 실행하는 방법에 대한 예제는 Multiple SQL query not executing in Cakephp을 참조하십시오.

+0

가장 쉬운 답변입니다. 문제는 내 스크립트에 테이블 접두어가있는 경우 무엇입니까? 이것은 역동적 일 필요가 있기 때문에 CakePHP 방식으로이 작업을 수행하려고합니다. – alairock

+0

원시 SQL 파일 (예 : [prefix] _my_table.foo)에서 매크로를 사용하고 쿼리를 실행하기 전에 str_replace()를 사용하여 실제 접두어로 바꿀 수 있습니다. – RichardAtHome

+0

효과적이지만 CakePHP 규칙을 고수하고 싶습니다. 내 데이터 배열을 구축하고 Model :: save [Many]를 사용하여 내 테이블을 그런 식으로 채울 계획입니다. 그래도 도와 ​​줘서 고마워. – alairock

관련 문제