CakePHP - 尝试使用模型SaveMany()构建多个SQL插入

时间:2013-04-07 01:38:16

标签: cakephp

我正在使用cakephp 2.3.0。我有一个场景,我需要在表中插入数据,但我需要根据需要插入数据的用户数进行多次插入。如果我在$userIds array中有一个值,或$userIds array中有一个以上的值,则表中只插入一行。即如果我在数组中有两个值,我希望在我的表中插入两行。

我无法弄清楚如何使用$userIds array中的不同值正确构建我的$ message数组。在下面的示例输出中,值5被3覆盖,3被4值覆盖。

当我在$ userIds数组中有2个或更多值时,我通过调试语句确认for循环在数组中每次都正确循环。

以下是调试语句的输出:

  

\ app \ Controller \ ActivitiesController.php(第134行)

     

'5'

     

\ app \ Controller \ ActivitiesController.php(第134行)

     

'3'

     

\ app \ Controller \ ActivitiesController.php(第134行)

     

'4'

     

\ app \ Controller \ ActivitiesController.php(第136行)

array(
'Message' => array(
    'message' => 'The activity has been deleted.',
    'user_id' => '4'
    )
)

以下是我的控制器的代码片段:

$this->Activity->Message->create();

foreach ($userIds as $ids) {
    $message = array(
        'Message' => array(
            'message' => 'The activity has been deleted.',
            'user_id' => $ids                                       
        )
    );

    debug($ids);                        
}
debug($message);
$this->Activity->Message->saveMany($message);

1 个答案:

答案 0 :(得分:2)

您每次都重置数组,而不是向其中添加一个元素。所以尝试像这样改变你的foreach

$message = array();
foreach ($userIds as $ids) {
    $message[] = array(
                    'Message' => array(
                        'message' => 'The activity has been deleted.',
                        'user_id' => $ids                                       
                    )
                );

    debug($ids);                        
}