2012-03-27 2 views
0

Привет, я просто задаюсь вопросом, можно ли сохранить несколько данных с hasMany: и если возможно, что такое структура массива перед выполнением $ this-> Model-> saveAll ($ this- > данные).cakePHP сохранение всех данных с функцией hasMany

пример является то, что вы собираетесь сохранить несколько сообщений, в то время как это:

array(
    [Post] => Array 
    (
     [0] => Array 
      (
       [title] => title One 
       [content] => desc One 
      ) 

     [1] => Array 
      (
       [title] => title two 
       [content] => desc two 
      ) 

    ) 

Таким образом, в данном массиве выше, мы можем сохранить все сообщение с SaveAll но что, если каждый Post есть hasMany комментарии каждый , как массив должен выглядеть, если я должен вставить ниже массив:

array(
    [Comment] => Array 
    (
     [0] => Array 
      (
       [comment] => 1st Comment for Post One 
      ) 


     [1] => Array 
      (
       [comment] => 2nd Comment for Post One 
      ) 


     [2] => Array 
      (
       [comment] => 1st Comment for Post Two 
      ) 


     [3] => Array 
      (
       [comment] => 2nd Comment for Post Two 
      ) 

    ) 

Как я могу объединить два массива для выполнения SaveAll(); Спасибо заранее.^_^

ответ

2

Предполагая ассоциацию для «пост имеет много комментариев» называется "Comments", данные будут выглядеть что-то вроде

array(
    'Post' => array(
     array(
      'title' => 'title1', 
      'content' => 'content1', 
      'Comments' => array(
       array('comment'=>'1st comment for post 1'), 
       array('comment'=>'2nd comment for post 1'), 
      ), 
     array(
      'title' => 'title2', 
      'content' => 'content2', 
      'Comments' => array(
       array('comment'=>'1st comment for post 2'), 
       array('comment'=>'2nd comment for post 2'), 
      ), 
     ), 
    ), 
) 

Для сохранения можно использовать что-то вроде:

$this->Model->saveMany($data, array('deep'=>TRUE)); 

Примечание что для «глубокой» опции требуется CakePHP 2.1. Без него связанные записи комментариев не будут сохранены.

Все это задокументировано в http://book.cakephp.org/2.0/en/models/saving-your-data.html

+0

Спасибо, я попробую это –

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