我有一张桌子organizations
。该表有一个主id
(int 10,unsigned,AUTO_INCREMENT)。
在表organizations
中,我还有一个iself的外键:main_organization_id
。它具有以下属性:(int 10,unsigned,nullable,empty:TRUE,default:NULL)。
每当我创建一个新组织时:
$organization = Organization::create($request->all());
在我的请求中没有main_organization_id
,它失败并出现以下错误:
SQLSTATE [23000]:完整性约束违规:1452无法添加或 更新子行:外键约束失败 (
myDB
。organizations
,CONSTRAINTorganizations_main_organization_id_foreign
外国钥匙 (main_organization_id
)REFERENCESorganizations
(id
))(SQL: 插入organizations
(main_organization_id
)个值 ())
但为什么会失败呢?该字段可以为空,这是否意味着我必须在请求中隐式设置main_organization_id
到null
?
我的$fillable
:
protected $fillable = [
'main_organization_id',
];
我的迁移:
Schema::table('organizations', function (Blueprint $table) {
$table->integer('main_organization_id')->unsigned()->nullable();
$table->foreign('main_organization_id')->references('id')->on('organizations');
});**strong text**
我想在创建新行之前阻止这样的代码:$request['main_organization_id'] = null;
。这可能吗?
感谢您的阅读。
答案 0 :(得分:1)
是的,您应该在创建组织时指定字段值,您应该这样做:
$organization = Organization::create(array_merge([
'main_organization_id' => null,
], request()->all()));
希望这有帮助!