* @var string
*/
protected $description = 'Make database migrations for Magic Models';
-
- protected $_schema;
+ protected $_schemas = [];
/**
* Execute the console command.
*/
public function handle()
{
- $this->_schema = new Schema();
-
$this->_handleMagicFolder([$this, '_migrate']);
-
- $prefix = 'database.connections.' . config('database.default') . '.';
-
$drivers = ['mysql' => 'pdo_mysql'];
- $comparator = new Comparator();
- $params = [
- 'host' => config($prefix . 'host'),
- 'port' => config($prefix . 'port'),
- 'user' => config($prefix . 'username'),
- 'password' => config($prefix . 'password'),
- 'driver' => $drivers[config($prefix . 'driver')],
- 'dbname' => config($prefix . 'database'),
- ];
- $this->line(print_r($params, true));
- $connection = DriverManager::getConnection($params);
- $connection->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
- $currentSchema = $connection->getSchemaManager()->createSchema();
- $diff = $comparator->compare($currentSchema, $this->_schema);
+ foreach ($this->_schemas as $connection => $schema) {
+ if (!$connection) {
+ $connection = config('database.default');
+ }
+ $prefix = 'database.connections.' . $connection . '.';
+
+ $comparator = new Comparator();
+ $params = [
+ 'host' => config($prefix . 'host'),
+ 'port' => config($prefix . 'port'),
+ 'user' => config($prefix . 'username'),
+ 'password' => config($prefix . 'password'),
+ 'driver' => $drivers[config($prefix . 'driver')],
+ 'dbname' => config($prefix . 'database'),
+ ];
+ $this->line(print_r($params, true));
+ $connection = DriverManager::getConnection($params);
+ $connection->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
+ $currentSchema = $connection->getSchemaManager()->createSchema();
+ $diff = $comparator->compare($currentSchema, $schema);
- $queries = $diff->toSaveSql($connection->getDatabasePlatform());
- foreach ($queries as $q) {
- $connection->exec($q);
+ $queries = $diff->toSaveSql($connection->getDatabasePlatform());
+ foreach ($queries as $q) {
+ $connection->exec($q);
+ }
}
Media::whereNull('uuid')->cursor()->each(
public function _migrate($model)
{
$this->line('Handling ' . get_class($model));
- $res = $model->setSchema($this->_schema);
+
+ $res = $model->setSchema($this->_getSchema($model->getConnectionName()));
if (null !== $res) {
$this->line('-- Migrate ' . $res->getName());
}
}
+
+ protected function _getSchema($connection)
+ {
+ if (!isset($this->_schemas[$connection])) {
+ $this->_schemas[$connection] = new Schema();
+ }
+ return $this->_schemas[$connection];
+ }
}
protected $_databaseType = 'text';
protected $_databaseUnique = false;
protected $_databaseIndex = false;
- protected $_databaseLength = null;
/** @var bool|string|array */
protected $_cast = false;
if ($name === 'created_at' || $name === 'updated_at') {
return;
}
+
+ $attributes = array_merge(
+ ['notnull' => !$this->getAttribute('allow_null', true)],
+ $this->_databaseAttributes
+ );
+
$table->addColumn($name,
CubistMagicAbstractModel::toDoctrineType($this->getDatabaseType()),
- array_merge(
- ['notnull' => !$this->getAttribute('allow_null', true)],
- $this->_databaseAttributes)
+ $attributes
);
if ($this->_databaseUnique) {
$table->addUniqueIndex([$name]);