我经常使用批量分配。我最近遇到了这个问题,我创建了可填充的值,并且默认为空值,但是在使用批量分配时,如果我的输入为空,则会返回“不能为空”错误。
My Model
protected $fillable = ['name','status'];
我的控制器
$this->model->create($request->all());
我的迁移
$table->boolean('status')->default(0);
上面的内容不应该意味着当我在输入字段上不提供任何内容时status
,它应该默认为0?但列不能null
被抛出。
有什么办法解决这个问题吗?
我自己也遇到过这个。看看你的应用\Http\Kernel.php文件。有一个 Laravel 中间件可以将空输入转换为空值。因此,即使您已经正确设置了批量分配,并且迁移默认为 0,该中间件也会在到达这些点之前更改该值。您正在寻找的代码类似于:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, // <<-- This one
];
您可以将其删除,或者将其保留并编写一个方法来补偿所有输入。我只是删除了它,然后设置一个变异器来执行中间件对那些我想要为空的输入所做的事情。
HTH
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)