Update multiple rows with different update values feature request · Issue #575 · laravel/ideas

PHOTO EMBED

Mon Jun 13 2022 15:01:07 GMT+0000 (Coordinated Universal Time)

Saved by @WMOH

public static function updateValues(array $values)
{
    $table = MyModel::getModel()->getTable();

    $cases = [];
    $ids = [];
    $params = [];

    foreach ($values as $id => $value) {
        $id = (int) $id;
        $cases[] = "WHEN {$id} then ?";
        $params[] = $value;
        $ids[] = $id;
    }

    $ids = implode(',', $ids);
    $cases = implode(' ', $cases);
    $params[] = Carbon::now();

    return \DB::update("UPDATE `{$table}` SET `value` = CASE `id` {$cases} END, `updated_at` = ? WHERE `id` in ({$ids})", $params);
}
content_copyCOPY

https://github.com/laravel/ideas/issues/575