Viewing file: DatabaseMigrationRepository.php (5.03 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Illuminate\Database\Migrations;
use Illuminate\Database\ConnectionResolverInterface as Resolver;
class DatabaseMigrationRepository implements MigrationRepositoryInterface { /** * The database connection resolver instance. * * @var \Illuminate\Database\ConnectionResolverInterface */ protected $resolver;
/** * The name of the migration table. * * @var string */ protected $table;
/** * The name of the database connection to use. * * @var string */ protected $connection;
/** * Create a new database migration repository instance. * * @param \Illuminate\Database\ConnectionResolverInterface $resolver * @param string $table * @return void */ public function __construct(Resolver $resolver, $table) { $this->table = $table; $this->resolver = $resolver; }
/** * Get the completed migrations. * * @return array */ public function getRan() { return $this->table() ->orderBy('batch', 'asc') ->orderBy('migration', 'asc') ->pluck('migration')->all(); }
/** * Get the list of migrations. * * @param int $steps * @return array */ public function getMigrations($steps) { $query = $this->table()->where('batch', '>=', '1');
return $query->orderBy('batch', 'desc') ->orderBy('migration', 'desc') ->take($steps)->get()->all(); }
/** * Get the last migration batch. * * @return array */ public function getLast() { $query = $this->table()->where('batch', $this->getLastBatchNumber());
return $query->orderBy('migration', 'desc')->get()->all(); }
/** * Get the completed migrations with their batch numbers. * * @return array */ public function getMigrationBatches() { return $this->table() ->orderBy('batch', 'asc') ->orderBy('migration', 'asc') ->pluck('batch', 'migration')->all(); }
/** * Log that a migration was run. * * @param string $file * @param int $batch * @return void */ public function log($file, $batch) { $record = ['migration' => $file, 'batch' => $batch];
$this->table()->insert($record); }
/** * Remove a migration from the log. * * @param object $migration * @return void */ public function delete($migration) { $this->table()->where('migration', $migration->migration)->delete(); }
/** * Get the next migration batch number. * * @return int */ public function getNextBatchNumber() { return $this->getLastBatchNumber() + 1; }
/** * Get the last migration batch number. * * @return int */ public function getLastBatchNumber() { return $this->table()->max('batch'); }
/** * Create the migration repository data store. * * @return void */ public function createRepository() { $schema = $this->getConnection()->getSchemaBuilder();
$schema->create($this->table, function ($table) { // The migrations table is responsible for keeping track of which of the // migrations have actually run for the application. We'll create the // table to hold the migration file's path as well as the batch ID. $table->increments('id'); $table->string('migration'); $table->integer('batch'); }); }
/** * Determine if the migration repository exists. * * @return bool */ public function repositoryExists() { $schema = $this->getConnection()->getSchemaBuilder();
return $schema->hasTable($this->table); }
/** * Delete the migration repository data store. * * @return void */ public function deleteRepository() { $schema = $this->getConnection()->getSchemaBuilder();
$schema->drop($this->table); }
/** * Get a query builder for the migration table. * * @return \Illuminate\Database\Query\Builder */ protected function table() { return $this->getConnection()->table($this->table)->useWritePdo(); }
/** * Get the connection resolver instance. * * @return \Illuminate\Database\ConnectionResolverInterface */ public function getConnectionResolver() { return $this->resolver; }
/** * Resolve the database connection instance. * * @return \Illuminate\Database\Connection */ public function getConnection() { return $this->resolver->connection($this->connection); }
/** * Set the information source to gather data. * * @param string $name * @return void */ public function setSource($name) { $this->connection = $name; } }
|