2013-09-03 5 views
0

저는 CakePHP 2.3을 사용하고 있는데 관련 데이터 저장을 수행하는 올바른 방법을 찾고 있습니다. 그림 데이터를 저장하는 이미지 업로드 양식을 설정 했는데도 저장 한 이미지를 처리하여 파일을 검사하고 모든 exif 데이터를 추출하여 관련 모델 태그로 추가해야하는 등 저장된 이미지를 처리하고 싶습니다. .CakePHP - 저장시 모델에 연결된 레코드를 추가하는 방법?

나의 관계는 지금 ​​

Picture hasMany Tags 
Tag belongsTo Picture 

이다 나는 프로그래밍 데이터 배열에 새 레코드를 추가 할 그림를 BeforeSave 콜백을 사용하려고 해요하지만 (이 추가 된 데이터를 저장 아니에요) 작동하지 않습니다. 어떻게 컨트롤러와 너무 엉망으로하지 않고 내가 원하는 것을 얻을 수를 BeforeSave

Array 
(
    [Picture] => Array 
     (
      [field1] => foo 
      [field2] => bar 
     ) 

    [Tag] => Array 
     (
      [0] => Array 
       (
        [tag] => example 
        [value] => example 
       ) 

      [1] => Array 
       (
        [tag] => example 2 
        [value] => example 2 
       ) 
     ) 
) 

PictureController

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

데이터 배열? 내 사업을 로직으로 모델에 집중하고 싶습니다.

답변

0

이 작업을 수행하려면 깊이 사용해야합니다. 요리 책에 따르면

은 $와도 연관된 데이터를 저장하려면 옵션 [ '깊은'] 진정한 (2.1부터)

$Model->saveMany($data, array('deep' => true)); 
$Model->saveAssociated($data, array('deep' => true)); 

자세한 내용은 cookbook 확인을 =

+0

방금 ​​시도했지만 작동하지 않습니다. 컨트롤러에 있었 니? 또는 beforeSave 콜백에서 save * 메서드를 호출해야합니까? – sangaran

+0

예, 컨트롤러에서 save 메소드를 호출했습니다.이 예제를 확인하십시오. http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-saveassociated-array-data-null-array -options-array – pollirrata

+0

심지어이 방법을 사용하면 이전에 저장 한 새 데이터를 저장하지 않습니다. – sangaran

관련 문제