Вход Регистрация
Файл: system/vendor/illuminate/database/Migrations/DatabaseMigrationRepository.php
Строк: 202
<?php

namespace IlluminateDatabaseMigrations;

use 
IlluminateDatabaseConnectionResolverInterface as Resolver;

class 
DatabaseMigrationRepository implements MigrationRepositoryInterface
{
    
/**
     * The database connection resolver instance.
     *
     * @var IlluminateDatabaseConnectionResolverInterface
     */
    
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  IlluminateDatabaseConnectionResolverInterface  $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 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);
    }

    
/**
     * Get a query builder for the migration table.
     *
     * @return IlluminateDatabaseQueryBuilder
     */
    
protected function table()
    {
        return 
$this->getConnection()->table($this->table)->useWritePdo();
    }

    
/**
     * Get the connection resolver instance.
     *
     * @return IlluminateDatabaseConnectionResolverInterface
     */
    
public function getConnectionResolver()
    {
        return 
$this->resolver;
    }

    
/**
     * Resolve the database connection instance.
     *
     * @return IlluminateDatabaseConnection
     */
    
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;
    }
}
Онлайн: 0
Реклама