сохранение тортаPHP Все данные с функцией hasMany - PullRequest
0 голосов
/ 27 марта 2012

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

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

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

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

    )

Таким образом, в приведенном выше массиве мы можем сохранить все сообщения с помощью saveAll, но что, если у каждого сообщения есть много комментариев к каждому. как должен выглядеть массив, если мне нужно вставить массив ниже:

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 (); Заранее спасибо. ^ _ ^

1 Ответ

2 голосов
/ 27 марта 2012

Если предположить, что ассоциация "пост имеет много комментариев" называется "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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...