PommBundle Multi-insert
Я хотел бы создать сложный запрос с pommbundle для вставки многострочного в одном запросе это возможно? можешь дать мне пример?
insert into table values (1,1), (1,2), (1,3), (2,1);
Пример: На самом деле я делаю это:
foreach($value['finition'] as $keyFinition => $valueFinition) {
$lot_parametre = $connecteur->getModel(LotparametreModel::class)
->createAndSave(['Lot' => $lot->get('ID'),
'Parametre' =>$keyFinition,
'Valeur' => $valueFinition,
'Niveau' => 2
]);
}
И я хочу самое быстрое решение
У меня есть решение: в контроллере:
$prepare = "";
$valeur = array();
if($value['parametre'] && is_array($value['parametre'])) {
foreach($value['parametre'] as $keyParam => $valueParam) {
//TYPAGE PARAMETRE
$prepare .= "($*::integer, $*::integer, $*::integer, $*::integer),";
$valeur[] = $lot->get('ID');
$valeur[] = $keyParam;
$valeur[] = $valueParam;
$valeur[] = 1;
}
}
//LOT PARAMETRE 2
if($value['finition'] && is_array($value['finition'])) {
foreach($value['finition'] as $keyFinition => $valueFinition) {
//TYPAGE PARAMETRE
$prepare .= "($*::integer, $*::integer, $*::integer, $*::integer),";
$valeur[] = $lot->get('ID');
$valeur[] = $keyFinition;
$valeur[] = $valueFinition;
$valeur[] = 2;
}
}
//INSERTION DES PARAMETRES
if($prepare && $valeur) {
$lot_parametre = $connecteur->getModel(LotparametreModel::class)
->insertMulti(\rtrim($prepare,','),$valeur);
}
/МОДЕЛЬ/ Lotparametremodel.php
public function insertMulti($prepare, $valeur)
{
$sql = "
insert into {lot_parametre}
(\"Lot\", \"Parametre\", \"Valeur\", \"Niveau\")
values
{prepare}
";
$sql = strtr(
$sql,
[
'{lot_parametre}' => $this->structure->getRelation(),
'{prepare}' => $prepare
]
);
return $this->query($sql,$valeur);
}