diff --git a/composer.json b/composer.json index 71562f4..3dcf97a 100644 --- a/composer.json +++ b/composer.json @@ -41,7 +41,7 @@ "require": { "php": "^8.0", "ext-pdo": "*", - "doctrine/dbal": "^3.0", + "doctrine/dbal": "^3.0 || ^4.0", "dragon-code/contracts": "^2.15", "dragon-code/support": "^6.0", "illuminate/contracts": "^8.0 || ^9.0 || ^10.0 || ^11.0", diff --git a/src/Console/Migrate.php b/src/Console/Migrate.php index 8d8da7c..da6a82f 100644 --- a/src/Console/Migrate.php +++ b/src/Console/Migrate.php @@ -7,6 +7,7 @@ use DragonCode\MigrateDB\Facades\BuilderManager; use DragonCode\Support\Facades\Helpers\Arr; use Illuminate\Console\Command; +use Illuminate\Database\Connection; use Illuminate\Database\Query\Builder as QueryBuilder; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; @@ -16,10 +17,10 @@ class Migrate extends Command { protected $signature = 'db:migrate' - . ' {--schema-from= : Source connection name}' - . ' {--schema-to= : Target connection name}' - . ' {--exclude=* : Comma separated table names to exclude}' - . ' {--tables=* : Comma separated table names to migrate only}'; + . ' {--schema-from= : Source connection name}' + . ' {--schema-to= : Target connection name}' + . ' {--exclude=* : Comma separated table names to exclude}' + . ' {--tables=* : Comma separated table names to migrate only}'; protected $description = 'Data transfer from one database to another'; @@ -252,7 +253,10 @@ protected function getMigrationOption(): string protected function confirmTableListOption(): bool { - return $this->confirm('Please confirm table list should be retrieved from target connection? (incase if source connection does not support it)', false); + return $this->confirm( + 'Please confirm table list should be retrieved from target connection? (incase if source connection does not support it)', + false + ); } protected function confirmTruncateTableOption(): bool @@ -311,7 +315,7 @@ protected function resolveOptions(): void protected function builder(string $connection, string $table): QueryBuilder { - return DB::connection($connection)->table($table); + return $this->connection($connection)->table($table); } protected function doesntHasTable(string $connection, string $table): bool @@ -321,6 +325,15 @@ protected function doesntHasTable(string $connection, string $table): bool protected function getPrimaryKeyType(string $connection, string $table, string $column): string { - return DB::connection($connection)->getDoctrineColumn($table, $column)->getType()->getName(); + if (method_exists($this->connection($connection), 'getDoctrineColumn')) { + return $this->connection($connection)->getDoctrineColumn($table, $column)->getType()->getName(); + } + + return $this->connection($connection)->getSchemaBuilder()->getColumnType($table, $column); + } + + protected function connection(string $name): Connection + { + return DB::connection($name); } } diff --git a/src/Database/Builder.php b/src/Database/Builder.php index e89f0a7..74594fa 100644 --- a/src/Database/Builder.php +++ b/src/Database/Builder.php @@ -24,7 +24,7 @@ public function __construct(Connection $connection) } /** - * @return \Illuminate\Database\Schema\Builder|\Illuminate\Database\Schema\MySqlBuilder|\Illuminate\Database\Schema\PostgresBuilder + * @return SchemaBuilder|\Illuminate\Database\Schema\MySqlBuilder|\Illuminate\Database\Schema\PostgresBuilder */ public function schema(): SchemaBuilder { diff --git a/src/Database/Manager.php b/src/Database/Manager.php index 7f76ac1..9a034bc 100644 --- a/src/Database/Manager.php +++ b/src/Database/Manager.php @@ -36,7 +36,7 @@ public function get(): BuilderContract } /** - * @return \DragonCode\MigrateDB\Database\Builder|string + * @return Builder|string */ protected function getBuilder(): string { diff --git a/tests/Concerns/Connections.php b/tests/Concerns/Connections.php index b8b00ee..a5a68dd 100644 --- a/tests/Concerns/Connections.php +++ b/tests/Concerns/Connections.php @@ -18,7 +18,7 @@ abstract protected function defaultSourceConnectionName(): string; abstract protected function defaultTargetConnectionName(): string; /** - * @return \Illuminate\Database\Schema\Builder|\Illuminate\Database\Schema\MySqlBuilder|\Illuminate\Database\Schema\PostgresBuilder + * @return Builder|\Illuminate\Database\Schema\MySqlBuilder|\Illuminate\Database\Schema\PostgresBuilder */ protected function sourceConnection(): Builder { @@ -26,7 +26,7 @@ protected function sourceConnection(): Builder } /** - * @return \Illuminate\Database\Schema\Builder|\Illuminate\Database\Schema\MySqlBuilder|\Illuminate\Database\Schema\PostgresBuilder + * @return Builder|\Illuminate\Database\Schema\MySqlBuilder|\Illuminate\Database\Schema\PostgresBuilder */ protected function targetConnection(): Builder { diff --git a/tests/Configurations/Manager.php b/tests/Configurations/Manager.php index 9f08908..0d36a68 100644 --- a/tests/Configurations/Manager.php +++ b/tests/Configurations/Manager.php @@ -23,7 +23,7 @@ public function get(string $driver): BaseConfiguration } /** - * @param string|\Tests\Configurations\BaseConfiguration $instance + * @param string|BaseConfiguration $instance */ protected function resolve(string $instance): BaseConfiguration {