for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Umbrellio\RollbackMissingMigrations\Helpers;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\DB;
use Umbrellio\RollbackMissingMigrations\Exceptions\RollbackMissingMigrationException;
class DbHelper
{
private $migrationTable;
public function __construct()
$this->migrationTable = Config::get('database.migrations');
}
public function backupBatchNumbers(array $migrationsNames): Collection
return DB::table($this->migrationTable)
->whereIn('migration', $migrationsNames)
->get();
public function updateBatch(array $migrationsNames, int $batchNumber)
DB::table($this->migrationTable)
->update([
'batch' => $batchNumber,
]);
public function restoreBatchNumbers(Collection $backupData)
$backupData->each(function ($migrationData) {
->where('migration', $migrationData->migration)
'batch' => $migrationData->batch,
});
public function checkIfRollbackIsSuccessful($migrationsForRollback): void
$migrations = DB::table($this->migrationTable)
->whereIn('migration', $migrationsForRollback)
->pluck('migration');
if ($migrations->isNotEmpty()) {
throw new RollbackMissingMigrationException($migrations);