2013-09-03 2 views
0

Я использую CakePHP 2.3, и я пытаюсь найти правильный способ выполнения связанной с этим экономии данных. Я установил форму загрузки изображения, которая сохраняет данные изображения, но в то же время я также хочу обработать сохраненное изображение таким образом, что при сохранении мое приложение должно проверить файл и извлечь все данные exif и добавить теги в качестве связанных тегов моделей ,CakePHP - Как добавить связанные записи в модель при сохранении?

Мои отношения

Picture hasMany Tags 
Tag belongsTo Picture 

Сейчас я пытаюсь использовать функцию обратного вызова Picture BeforeSave программно добавлять новые записи в массиве данных, но это не работает (это не сохранение добавленные данные).

PictureController массив

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

данных после BeforeSave

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

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

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

Как я могу добиться того, чего я хочу, не портя слишком много с контроллером? Я бы хотел, чтобы мой бизнес логики оставался в основном на модели.

ответ

0

Для этого необходимо использовать глубину. Согласно поваренной:

Чтобы сохранить также связанные с ним данные с $ опции [ 'глубокий'] = TRUE (начиная с 2.1)

Примеры

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

Проверьте cookbook для более подробной информации

+0

Я только что пробовал, но он не работает. Вы имели в виду в контроллере, не так ли? Или я должен вызвать метод save * в обратном вызове beforeSave? – sangaran

+0

yep, вы вызываете метод сохранения на контроллере .. проверьте эти примеры http://book.cakephp.org/2.0/ru/models/saving-your-data.html#model-saveassociated-array-data-null-array -options-array – pollirrata

+0

Даже таким образом новые связанные данные, которые я «впрыскиваю» в мой beforeSave, не сохраняются. – sangaran

Смежные вопросы