Вход Регистрация
Файл: gapps/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php
Строк: 326
<?php

namespace IlluminateDatabaseSchema;

use 
Closure;
use 
IlluminateDatabaseConnection;

class 
Builder
{
    
/**
     * The database connection instance.
     *
     * @var IlluminateDatabaseConnection
     */
    
protected $connection;

    
/**
     * The schema grammar instance.
     *
     * @var IlluminateDatabaseSchemaGrammarsGrammar
     */
    
protected $grammar;

    
/**
     * The Blueprint resolver callback.
     *
     * @var Closure
     */
    
protected $resolver;

    
/**
     * Create a new database Schema manager.
     *
     * @param  IlluminateDatabaseConnection  $connection
     * @return void
     */
    
public function __construct(Connection $connection)
    {
        
$this->connection $connection;
        
$this->grammar $connection->getSchemaGrammar();
    }

    
/**
     * Determine if the given table exists.
     *
     * @param  string  $table
     * @return bool
     */
    
public function hasTable($table)
    {
        
$sql $this->grammar->compileTableExists();

        
$table $this->connection->getTablePrefix().$table;

        return 
count($this->connection->select($sql, [$table])) > 0;
    }

    
/**
     * Determine if the given table has a given column.
     *
     * @param  string  $table
     * @param  string  $column
     * @return bool
     */
    
public function hasColumn($table$column)
    {
        
$column strtolower($column);

        return 
in_array($columnarray_map('strtolower'$this->getColumnListing($table)));
    }

    
/**
     * Determine if the given table has given columns.
     *
     * @param  string  $table
     * @param  array   $columns
     * @return bool
     */
    
public function hasColumns($table, array $columns)
    {
        
$tableColumns array_map('strtolower'$this->getColumnListing($table));

        foreach (
$columns as $column) {
            if (! 
in_array(strtolower($column), $tableColumns)) {
                return 
false;
            }
        }

        return 
true;
    }

    
/**
     * Get the data type for the given column name.
     *
     * @param  string  $table
     * @param  string  $column
     * @return string
     */
    
public function getColumnType($table$column)
    {
        
$table $this->connection->getTablePrefix().$table;

        return 
$this->connection->getDoctrineColumn($table$column)->getType()->getName();
    }

    
/**
     * Get the column listing for a given table.
     *
     * @param  string  $table
     * @return array
     */
    
public function getColumnListing($table)
    {
        
$table $this->connection->getTablePrefix().$table;

        
$results $this->connection->select($this->grammar->compileColumnExists($table));

        return 
$this->connection->getPostProcessor()->processColumnListing($results);
    }

    
/**
     * Modify a table on the schema.
     *
     * @param  string    $table
     * @param  Closure  $callback
     * @return IlluminateDatabaseSchemaBlueprint
     */
    
public function table($tableClosure $callback)
    {
        
$this->build($this->createBlueprint($table$callback));
    }

    
/**
     * Create a new table on the schema.
     *
     * @param  string    $table
     * @param  Closure  $callback
     * @return IlluminateDatabaseSchemaBlueprint
     */
    
public function create($tableClosure $callback)
    {
        
$blueprint $this->createBlueprint($table);

        
$blueprint->create();

        
$callback($blueprint);

        
$this->build($blueprint);
    }

    
/**
     * Drop a table from the schema.
     *
     * @param  string  $table
     * @return IlluminateDatabaseSchemaBlueprint
     */
    
public function drop($table)
    {
        
$blueprint $this->createBlueprint($table);

        
$blueprint->drop();

        
$this->build($blueprint);
    }

    
/**
     * Drop a table from the schema if it exists.
     *
     * @param  string  $table
     * @return IlluminateDatabaseSchemaBlueprint
     */
    
public function dropIfExists($table)
    {
        
$blueprint $this->createBlueprint($table);

        
$blueprint->dropIfExists();

        
$this->build($blueprint);
    }

    
/**
     * Rename a table on the schema.
     *
     * @param  string  $from
     * @param  string  $to
     * @return IlluminateDatabaseSchemaBlueprint
     */
    
public function rename($from$to)
    {
        
$blueprint $this->createBlueprint($from);

        
$blueprint->rename($to);

        
$this->build($blueprint);
    }

    
/**
     * Enable foreign key constraints.
     *
     * @return bool
     */
    
public function enableForeignKeyConstraints()
    {
        return 
$this->connection->statement(
            
$this->grammar->compileEnableForeignKeyConstraints()
        );
    }

    
/**
     * Disable foreign key constraints.
     *
     * @return bool
     */
    
public function disableForeignKeyConstraints()
    {
        return 
$this->connection->statement(
            
$this->grammar->compileDisableForeignKeyConstraints()
        );
    }

    
/**
     * Execute the blueprint to build / modify the table.
     *
     * @param  IlluminateDatabaseSchemaBlueprint  $blueprint
     * @return void
     */
    
protected function build(Blueprint $blueprint)
    {
        
$blueprint->build($this->connection$this->grammar);
    }

    
/**
     * Create a new command set with a Closure.
     *
     * @param  string  $table
     * @param  Closure|null  $callback
     * @return IlluminateDatabaseSchemaBlueprint
     */
    
protected function createBlueprint($tableClosure $callback null)
    {
        if (isset(
$this->resolver)) {
            return 
call_user_func($this->resolver$table$callback);
        }

        return new 
Blueprint($table$callback);
    }

    
/**
     * Get the database connection instance.
     *
     * @return IlluminateDatabaseConnection
     */
    
public function getConnection()
    {
        return 
$this->connection;
    }

    
/**
     * Set the database connection instance.
     *
     * @param  IlluminateDatabaseConnection  $connection
     * @return $this
     */
    
public function setConnection(Connection $connection)
    {
        
$this->connection $connection;

        return 
$this;
    }

    
/**
     * Set the Schema Blueprint resolver callback.
     *
     * @param  Closure  $resolver
     * @return void
     */
    
public function blueprintResolver(Closure $resolver)
    {
        
$this->resolver $resolver;
    }
}
Онлайн: 1
Реклама