我想在迁移文件中设置可为空的字段,而不使用AppServiceProvider引导中的-> nullable():
public function boot()
{
\Schema::defaultStringLength('191');
\Schema::defaultNull('Yes');
}
所以,我可以在迁移文件中使用
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('email')->unique();
$table->string('password');
$table->string('firstname'); // default nullable
$table->string('lastname'); // default nullable
$table->timestamps();
});
代替
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('email')->unique();
$table->string('password');
$table->string('firstname')->nullable();
$table->string('lastname')->nullable();
$table->timestamps();
});
答案 0 :(得分:0)
可为空值是一个约束,可以尝试默认(0)或默认( '')。
npm install
答案 1 :(得分:0)
至少在Laravel 5.5.44中进行测试Blueprint
类是Macroable。这意味着您可以添加aditional的功能的类。
这意味着您可以执行以下操作:
此添加到boot()
AppServiceProvider
方法
use Illuminate\Database\Schema\Blueprint;
...
Blueprint::macro('nullableString', function(string $column, $length = null){ .
return $this->string($column, $length)->nullable();
});
然后可以使用nullableString()
在迁移设置如下:
...
$table->nullableString('firstname'); // default nullable
$table->nullableString('lastname'); // default nullable
...
干杯!
PS:在许多情况下,我会避免过度自动执行此操作。迁移是假设,以帮助你有你的数据库的支持文档架构变化的长远之计。但是,如果你能管理它,为什么不呢?