Comment faire un bloc de base de données insérer dans Yii2?

Je me demande comment vous allez faire sur une base de données en vrac INSERT dans Yii2?

Par exemple un normal INSERT je voudrais donc:

$sql = $this->db("INSERT INTO some_table(id,my_value) VALUES(:id,:my_value)");
$sql->bindValues([':id' => $id, ':my_value' => $my_value]);
$sql->execute();

Maintenant, si je voulais créer un bloc INSERT?

Sans valeurs contraignantes vous pourrait-il quelque chose comme:

foreach ($foo as $bar) {
    $data_sql .= '(' . $id . ',' "'" . $bar . "'),"
}

$data_sql = rtrim($data_sql, ',');

$sql = $this->db("INSERT INTO some_table(id,my_value) VALUES" . $data_sql);
$sql->execute();

Mais comment pouvez-vous arriver si vous voulez toujours de lier les valeurs?

Edit: Cette question n'est pas la même sur le site car je ne suis pas à l'aide de ActiveRecord.

Edit 2:

Idéalement, il serait bien si il y avait une solution qui offrait un peu de souplesse, comme le fait d'être capable d'écrire plus de votre propre syntaxe, comme l'une des réponses postées ci-dessous:

Yii::$app->db->createCommand()->batchInsert('tableName', ['id', 'title', 'created_at'], [
    [1, 'title1', '2015-04-10'],
    [2, 'title2', '2015-04-11'],
    [3, 'title3', '2015-04-12'],
])->execute();

...n'offre pas que. Pour cette situation, j'ai besoin d'utiliser la IGNORE de déclaration, que la solution ci-dessus n'offre pas.

Créer quelque chose comme INSERT INTO some_table(id,my_value) VALUES (?, ?),(?, ?),(?, ?),(?, ?) et remplissent?
Eh bien, j'avais pensé à faire quelque chose de similaire en ajoutant des numéros à la fin de chaque espace réservé, mais espérais qu'il y a une meilleure façon.
double possible de ActiveRecord insertion de lot (yii2)

OriginalL'auteur Brett | 2015-04-11