Окт
15

CakePHP – сохранение массива данных (нескольких записей)

CakePHP – сохранение массива данных (нескольких записей)

Для того, чтобы сохранить данные в CakePHP, пришедшие, например, после редактирования формы, нужно воспользоваться функцией save. Формат данных (передаваемой переменной) при этом должен быть следующим:

1
2
3
4
5
6
7
8
Array
(
    [ModelName] => Array
        (
            [fieldname1] => 'value'
            [fieldname2] => 'value'
        )
)

А что делать, если необходимо сохранить массив данных, то есть сразу несколько записей?

Для этого нужно воспользоваться функцией saveAll. Например, мы имеем массив $newArticles:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Array
(
      [0] => Array(
           
           [Article] => Array
                   (
                         [title] => 'Новые технологии на рынке видеокарт'
                         [author] => 'Ben'
                   )
      )

      [1] => Array(
           
           [Article] => Array
                   (
                         [title] => 'Обновление моделей 21' мониторов'
                         [author] => '
Alex R'
                   )
      )
)

И для того, чтобы сохранить/обновить эти данные в таблице Articles, необходимо вызвать функцию saveAll (для обновления, естественно, необходимо, чтобы у элементов массива были указаны ID)

1
$this->Article->saveAll($newArticles);

Похожие статьи:

Комментарии

  • Репа 7 января 2012 в 20:12

    А как сделать форму, в которой бы было много полей с одним именем, а в БД при сохранении появилось бы столько записей, сколько полей заполнено в форме?
    Например есть “Телевизор” у которого может быть 3 цвета. я заполняю “красный” и т.д
    и при сохранении в бд появляется 3 записи с id и color

    • admin 30 марта 2012 в 04:41

      Думаю такое можно сделать с помощью Query, а не SaveAll. И, например, в цикле (правда это плохой вариант :) )

Добавить комментарий

Перед отправкой формы:
Human test by Not Captcha