200576 * "columns" => array:1 [ * "transactions_banks.coupon_code" => "2001462387" * ] * ] * ] * * @return void */ public function apply(string $table, string $primaryKeyName, $config): void { /** @var DatabaseManager $db */ $db = app('db'); $primaryKeyValues = []; $whenGroup = []; foreach ($config as $configItem) { $primaryKey = $configItem['primary_key']; $primaryKeyValues[] = $primaryKey; foreach ($configItem['columns'] as $columnName => $columnValue) { if (!isset($whenGroup[$columnName])) { $whenGroup[$columnName] = []; } $whenGroup[$columnName][] = vsprintf('WHEN %s THEN %s', [ $primaryKey, $columnValue ]); } } $values = []; foreach ($whenGroup as $column => $whenArr) { /** @var Expression[] $whenArr */ $case = $db->raw(vsprintf('CASE %s %s END', [$primaryKeyName, implode(' ', $whenArr)])); $values[$column] = $case; } if (empty($values)) { return; } // $db->enableQueryLog(); $db->table($table) ->whereIn($primaryKeyName, $primaryKeyValues) ->update($values); // dd($db->getQueryLog()); } }