ooxif/laravel-spec-schema

此包已被弃用且不再维护。未建议替代包。

扩展Laravel的Schema/Grammar/Blueprint以描述驱动程序的具体功能

1.0.4 2016-06-15 20:41 UTC

This package is not auto-updated.

Last update: 2024-07-06 17:33:14 UTC


README

laravel-spec-schema

扩展Laravel的Schema/Grammar/Blueprint以描述驱动程序的具体功能。

安装

composer require "ooxif/laravel-spec-schema:1.0.*"

然后

  • 'Ooxif\LaravelSpecSchema\SpecSchemaServiceProvider',添加到config/app.php中的providers
  • config/app.phpaliases中将'Schema' => 'Illuminate\Support\Facades\Schema',替换为'Schema' => 'Ooxif\LaravelSpecSchema\Facades\Schema',

示例

use Ooxif\LaravelSpecSchema\Blueprint;

Schema::create('table_name', function (Blueprint $table) {
    // Blueprint extends Illuminate\Database\Schema\Blueprint.

    // add a BINARY column if the driver is MySQL,
    // otherwise falls back to default binary(). 
    $table->myBinary('column_name', 8);
    
    // VARBINARY/TINYBLOB/MEDIUMBLOB/LONGBLOB also falls back to default binary().
    $table->myVarBinary('column_name', 16);
    $table->myTinyBlob('column_name');
    $table->myMediumBlob('column_name');
    $table->myLongBlob('column_name');
    
    // TINYTEXT falls back to default text().
    $table->myTinyText('column_name');
    
    // add `collate`
    $table->string('column_name')->collate('utf8_bin');
});

使用您自己的Schema Builder/Grammar/Blueprint类

class MyMySqlBuilder extends Ooxif\LaravelSpecSchema\MySql\Builder
                  // extends Illuminate\Database\Schema\MySqlBuilder
{
    // your code here.
}

class MyMySqlGrammar extends Ooxif\LaravelSpecSchema\MySql\Grammar
                  // extends Illuminate\Database\Schema\Grammars\MySqlGrammar
{
    // your code here.
}

class MyBlueprint extends Ooxif\LaravelSpecSchema\Blueprint
               // extends Illuminate\Database\Schema\Blueprint
{
    // your code here.
}


// setBuilderClass(string $driverName, string $className)
Schema::setBuilderClass('mysql', 'MyMySqlBuilder');

// setGrammarClass(string $driverName, string $className)
Schema::setGrammarClass('mysql', 'MyMySqlGrammar');

// setBlueprintClass(string $className)
Schema::setBlueprintClass('MyBlueprint');


Schema::create('table_name', function ($table) {
    $table instanceof MyBlueprint; // true
    
    $table->getBuilder() instanceof MyMySqlBuilder; // true
    
    $table->getBuilder()->getGrammer() instanceof MyMySqlGrammar; // true
});