Cakephp - saveall() - Как должен выглядеть массив?

Я пытаюсь сохранить сразу много данных с помощью метода saveAll() в cakephp 2. Проблема в том, что я не понимаю, как должен выглядеть массив, который я передаю функции saveAll().

У меня есть следующие модели:

Recipe:
hasMany: Recipeitem
hasAndBelongsToMany:Category

Category:
hasAndBelongsToMany: Recipe

Recipeitem:
belongsTo: Recipe
hasMany: Ingredient

Ingredient:
belongsTo: Grocery, Recipeitem

Grocery:
hasMany: Ingredient

Итак, если я хочу сохранить рецепт с двумя элементами рецепта с двумя ингредиентами в каждом, как должен выглядеть объект массива, который я передаю функции saveAll?

Вот как выглядит мой массив на данный момент:

Array
(
[Recipe] => Array
    (
        [title] => Mushroom pie
        [instructions] => Just mix it!
        [cooking_time] => 20
    )

[Category] => Array
    (
        [Category] => Array
            (
                [0] => 5
                [1] => 3
            )

    )

[Recipeitem] => Array
    (
        [0] => Array
            (
                [Recipeitem] => Array
                    (
                        [name] => Crust
                        [order] => 0
                        [Ingredients] => Array
                            (
                                [0] => Array
                                    (
                                        [Ingredient] => Array
                                            (
                                                [amount] => 2
                                                [unit] => dl
                                                [order] => 0
                                                [Grocery] => Array
                                                    (
                                                        [name] => Butter
                                                        [description] => Butter
                                                    )

                                            )

                                    ),
                                [1] => Array
                                    (
                                        [Ingredient] => Array
                                            (
                                                [amount] => 3
                                                [unit] => dl
                                                [order] => 1
                                                [Grocery] => Array
                                                    (
                                                        [name] => Sugar
                                                        [description] => Sugar
                                                    )

                                            )

                                    )

                            )

                    )

            ),
        [1] => Array
            (
                [Recipeitem] => Array
                    (
                        [name] => Filling
                        [order] => 1
                        [Ingredients] => Array
                            (
                                [0] => Array
                                    (
                                        [Ingredient] => Array
                                            (
                                                [amount] => 2
                                                [unit] => dl
                                                [order] => 0
                                                [Grocery] => Array
                                                    (
                                                        [name] => Mushroom
                                                        [description] => Mushroom
                                                    )

                                            )

                                    )

                            )

                    )

            )

    )

)


person gusper    schedule 10.10.2012    source источник
comment
статья, которую я написал об этом на днях.. может поможет :)   -  person pleasedontbelong    schedule 11.10.2012


Ответы (1)


Я сам решил проблему, немного лучше прочитав поваренную книгу CakePHP:

Изменено в версии 2.1: теперь вы можете сохранять более глубокие связанные данные, установив $options['deep'] = true;

Так что для меня это было все, что мне нужно:

$saveOptions['deep'] = true;
if ($this->Recipe->saveAll($this->request->data, $saveOptions )) {
person gusper    schedule 17.10.2012