sql >> データベース >  >> RDS >> Mysql

クエリビルダーで挿入を使用して複数のレコードを挿入するにはどうすればよいですか?

    テストしたばかりです。これは機能します。

       $newUsers = [
            [
                'username' => 'Felicia',
                'age' => 27,
            ],
            [
                'username' => 'Timmy',
                'age' => 71,
            ],
        ];
    
        $columns = array_keys($newUsers[0]);
    

    警告!一括挿入を行うには2つの方法があります。これは1つの方法です:

        $insertQuery = $this->Users->query();
    
        $newUsersValuesExpression = new ValuesExpression($columns, $insertQuery->typeMap()->types([]));
        $newUsersValuesExpression->values($newUsers);
    
        $insertQuery->insert($columns)
                    ->values($newUsersValuesExpression)
                    ->execute();
    

    ndmが提案しているように、私はこの方法を好みます。

        $insertQuery = $this->Users->query();
    
        $insertQuery->insert($columns);
    
        // you must always alter the values clause AFTER insert
        $insertQuery->clause('values')->values($newUsers);
    
        $insertQuery->execute();
    


    1. MySqlFLOATデータ型と7桁を超えるスケールの問題

    2. SQLスクリプトからシェルスクリプトへの戻り値

    3. PDO-無効なパラメータ番号

    4. Oracleでグローバル一時テーブルを回避する方法