$cardQueryList = [];
foreach($cards as $cardName => $quantity) {
$cardQueryList[] = [
'username' => $user->username,
'card_uid' => $card->uid,
'have_quantity' => $quantity
];
}
Collection::insert($cardQueryList);
Приведенный выше код создает новые строки, даже если строка существует. Как я могу это сделать, если строка существует, она обновляется. И если он не создает строку? Яркий или Свободный ответ был бы оптимальным, но я открыт для сырых, если нет другого пути.
Я хотел бы сделать массовое обновление/вставку с помощью одного запроса. Не для цикла запросов для каждой записи. В идеале я хотел бы получить доступ к базе данных по понятным причинам.
Также я уже проверил следующую ссылку:
Вставить новую запись, если она не существует, и обновить, если она существует, laravel eloquent
Вышеупомянутое работает для одного обновления/вставки записи. Который, если бы я работал с циклом for, был бы очень медленным. Я ищу ответ, который позволяет массовую вставку/обновление в одном запросе.
Примечание. Я использую как "имя пользователя", так и "card_uid" в качестве ключа. Поэтому в основном, когда я нахожу строку с указанным именем пользователя и card_uid, я хотел бы обновить соответствующую строку. В противном случае создайте новую строку.