没有内置的方法可以做到这一点,但您可以用最少的代码获得良好的结果。
<?php
use Illuminate\Database\Schema\Grammars\Grammar;
// Put this in a service provider's register function.
Grammar::macro('typePolygon', function (Fluent $column) {
return 'POLYGON';
});
// This belongs in a migration.
Schema::create('my_table', function (Blueprint $table) {
$table->bigIncrements('id');
$table->addColumn('polygon', 'my_foo');
});
关键是在 Grammar 类中添加一个具有名称的函数,typePolygon
因为这个函数决定了特定 DBMS 使用的实际类型。我们通过在语法中添加一个宏来实现这一点。
我写了一篇关于如何将此解决方案扩展到任何自定义类型的博客文章:https ://hbgl.dev/add-columns-with-custom-types-in-laravel-migrations/