如何使用自定义方法$table->myMethod()扩展Laravel 5.5/5.6 MySQL Blueprint,如预构建方法$table->timestamps(); ?
我用 SQLlite 试过一个例子:Extending Blueprint for SQLite in Laravel 5
但我无法让它工作。我正在开发我自己的包(使用包开发最佳实践)并希望从那里包含 Blueprint 扩展。
我开发的包有 Laravel 扩展文件夹“扩展”:./packages/vendorname/packagename/src/ Extension /
有文件:
1) ./packages/vendorname/packagename/src/Extension/Blueprint.php
<?php
namespace Vendorname\Packagename\Extension;
use Illuminate\Database\Schema\Blueprint as ParentBlueprint;
use Illuminate\Support\Facades\DB;
class Blueprint extends ParentBlueprint
{
public function myMethod()
{
$this->text('custom_column')->default('Some value');
$this->text('custom_column2')->default('Some value2');
}
}
Run Code Online (Sandbox Code Playgroud)
2) ./packages/vendorname/packagename/src/Extension/MySqlConnection.php
<?php
namespace Vendorname\Packagename\Extension;
use Vendorname\Packagename\Extension\Blueprint;
use Illuminate\Database\MySqlConnection as ParentMySqlConnection;
use Illuminate\Database\Schema\MySqlBuilder;
class MySqlConnection extends ParentMySqlConnection
{
public function getSchemaBuilder()
{
if (is_null($this->schemaGrammar)) …Run Code Online (Sandbox Code Playgroud)