. */ declare(strict_types=1); use Illuminate\Database\Migrations\Migration; use Illuminate\Database\QueryException; use Illuminate\Database\Schema\Blueprint; /** * Class FixNullables. * * @codeCoverageIgnore */ class FixNullables extends Migration { private const COLUMN_ALREADY_EXISTS = 'If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.'; private const TABLE_UPDATE_ERROR = 'Could not update table "%s": %s'; /** * Reverse the migrations. */ public function down(): void { } /** * Run the migrations. * */ public function up(): void { if (!Schema::hasColumn('rule_groups', 'description')) { try { Schema::table( 'rule_groups', static function (Blueprint $table) { $table->text('description')->nullable()->change(); } ); } catch (QueryException $e) { Log::error(sprintf(self::TABLE_UPDATE_ERROR, 'rule_groups', $e->getMessage())); Log::error(self::COLUMN_ALREADY_EXISTS); } } if (!Schema::hasColumn('rules', 'description')) { try { Schema::table( 'rules', static function (Blueprint $table) { $table->text('description')->nullable()->change(); } ); } catch (QueryException $e) { Log::error(sprintf(self::TABLE_UPDATE_ERROR, 'rules', $e->getMessage())); Log::error(self::COLUMN_ALREADY_EXISTS); } } } }