200576 * "columns" => array:1 [ * "coupon_code" => "2001462387" * ] * ] * ] * * @return void */ public function apply(string $table, string $primaryKeyName, array $config): void { $valuesSqls = []; $columns = $config[0]['columns']; foreach ($config as $configItem) { $valuesSqls[] = vsprintf('(%s, %s)', [$configItem['primary_key'], implode(', ', $configItem['columns'])]); } $valuesSql = implode(', ', $valuesSqls); $setSqls = []; foreach ($columns as $columnName => $columnValue) { $setSqls[] = vsprintf('%s = a2.%s', [$columnName, $columnName]); } $setSql = implode(', ', $setSqls); $sql = vsprintf('update %s as a1 set %s from (values %s) as a2(%s, date, value) where a1.%s = a2.%s', [ $table, $setSql, $valuesSql, $primaryKeyName, $primaryKeyName, $primaryKeyName, ]); DB::statement($sql); } }