0

私はcakephp 2.3.0を使用しています。テーブルにデータを挿入する必要があるシナリオがありますが、挿入されたデータを必要とするユーザーの数に基づいて、複数の挿入を行う必要があります。に 1 つの値$userIds array、または に複数の値がある場合$userIds array、テーブルには 1 行だけが挿入されます。つまり、配列に 2 つの値がある場合、テーブルに 2 つの行が挿入されると予想されます。

とは異なる値で $message 配列を正しく構築する方法がわかりません$userIds array。以下の出力例では、5 の値は 3 で上書きされ、3 は 4 の値で上書きされます。

$userIds 配列に 2 つ以上の値がある場合、debug ステートメントによって、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);
4

1 に答える 1

2

配列に要素を 1 つ追加するのではなく、配列を毎回リセットします。したがって、このようにforeachを変更してみてください

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

    debug($ids);                        
}
于 2013-04-07T02:58:21.360 に答える