Красноречивый вкладыш, ОБНОВЛЕНИЕ КЛЮЧЕВОГО КЛЮЧА

Я делал:

$data = [
['amodule'=>'amodule', 'akey'=>'first_example', 'avalue'=>'4096', 'created_at'=>'2014-09-21'],
['amodule'=>'amodule2', 'akey'=>'sec_example', 'avalue'=>'4097', 'created_at'=>'2014-09-22'],
['amodule'=>'amodule2', 'akey'=>'sec_example', 'avalue'=>'4097', 'created_at'=>'2014-09-22'],
];

Models\Snapshot::insert($data);

Просто выполняю массовую вставку. Теперь я хочу добавить ключ дубликата к этому. Есть идеи, как это сделать? Или в списке, чтобы игнорировать дубликаты?

Заранее спасибо…

5

Решение

Eloquent не поддерживает это в данный момент, вам придется написать его как необработанный запрос.

// generates (?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?)
$valueString = implode(',', array_fill(0, count($data), '(' . implode(',', array_fill(0, count($data[0]), '?')) . ')'));
$values = [];

// Flattens the array
foreach($data as $row) {
foreach($row as $value) {
$values[] = $value;
}
}

// Perform the insert
\DB::insert(
"insert into `snapshots` (`amodule`, `akey`, `avalue`, `created_at`) values {$values} on duplicate key update",
$values
);

Имейте в виду, что для on duplicate key update для запуска по крайней мере одно из вставленных значений должно иметь первичный ключ или уникальный ключ.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]