我一直在工作,然后尝试在建立此的地方进行迁移:
$table->string('company')->default('None');
$table->string('job')->default('freelancer');
现在,发生的情况是,当我填写表格并提交时,它向我抛出一条错误消息,指出字段不能为NULL
。
所以我有点困惑,因为据我所知,如果字段为NULL
,则应将其保存为迁移的default
部分建立的字段。
我如何使其工作?
预先感谢您的帮助。
答案 0 :(得分:0)
可能是您的模型中缺少$fillable
属性:
protected $fillable = ['company','job'];
还要确保您的迁移文件生成正确。转到table
,查看默认值是否设置正确。
答案 1 :(得分:0)
它表示如果在插入数据库时没有任何内容传递给此列,则将设置给定的默认值。但是,如果您尝试在此列中插入NULL值,则会引发错误。
如果您想在此列上允许NULL值,则应添加-> nullable()。像这样:
$table->string('company')->nullable()->default('None');
让我们尝试解释更多:
假设您的“ column1”在您的可填充数组中。 当您填充没有column1的模型时。 Laravel将生成类似
的查询INSERT INTO table_name(column1) VALUES(NULL)
如果您的column1不可为空,则会引发错误。 如果“ column1”不在$ fillable数组中,并且您在不使用“ column1”的情况下填充模型,则laravel生成不包含“ column1”的查询,例如:
INSERT table(othercolumns ... ) VALUEs(....)
未设置Column1,因此MYSQL将在此处设置默认值。