将所有数据保存在单个语句中,无需循环

时间:2013-10-09 09:14:33

标签: cakephp cakephp-2.3

如何保存cakePHP中的所有数据。假设我有关于单个模型的记录数量我希望一次保存所有数据。我的数组是格式化的。

Array
(
[Attendance] => Array
    (
        [0] => Array
            (
                [date] => 2013-10-09
                [user_id] => 10
                [attendance] => 1
            )

        [1] => Array
            (
                [date] => 2013-10-09
                [user_id] => 8
                [attendance] => 0
            )
    )
)

这是否可以一次保存所有数据。我尝试使用saveMany这样做,但它没有成功。

我是否需要在循环

中执行此操作
foreach ($result as $data) {
                $this->Attendance->create();
                $this->request->data['Attendance'] = $data;
                $this->Attendance->save($this->request->data);
}

2 个答案:

答案 0 :(得分:1)

尝试saveMany而不是保存

$this->Attendance->saveMany($this->request->data);

数据应采用以下格式:

Array
(
[1] => Array
    (
        [Attendance] => Array
            (
                [field] => value
                [field] => value
            )
    )

[2] => Array
    (
        [Attendance] => Array
            (
                [field_1] => value
                [field_2] => value
            )
    )
)

答案 1 :(得分:0)

CakePHP将为您在阵列上的每个id保存每条记录。唯一的要求是使用它们的数组结构约定,然后使用:

    // Check method request
    if ($this->request->is('post')) {
        // Check not empty data
        if (!empty($this->data)) {
            // Save the data
            if ($this-> Attendance->save($this->request->data)) {
                // Set a session flash message and redirect.
                $this->Session->setFlash('Attendance saved.');
                $this->redirect('/Attendances');
            } else {
                $this->Session->setFlash('Error saving the data.');                
            }
        }
    }