我想存储每个会员注册时的会员购物日。但是这里的attach()
方法不起作用。它说Integrity constraint violation: 1452
。我定义了BelongToMany
关系。
这是我的Member
模型:
public function dayShop(){
return $this->belongsToMany(Days::class, 'member_shops','member_id','day_name');
}
这是我的控制器:
public function store(Request $request)
{
$member = new Member();
$member->name=$request->name;
$member->balance=$request->balance;
$member->email=$request->email;
$member->password=Hash::make($request->password);
$member->role=$request->role;
$member->save();
$member->dayShop()->attach('1', ['day_name' => 'Something']);
return back();
}
member_shops
表:
Schema::create('member_shops', function (Blueprint $table) {
$table->increments('id');
$table->integer('member_id')->unsigned()->nullable();
$table->foreign('member_id')->references('id')
->on('members')->onUpdate('cascade')->onDelete('cascade');
$table->string('day_name')->nullable();
$table->foreign('day_name')->references('name')
->on('days')->onUpdate('cascade')->onDelete('cascade');
$table->timestamps();
});
错误是:
SQLSTATE [23000]:违反完整性约束:1452无法添加或 更新子行:外键约束失败 ({
meal
。member_shops
,约束member_shops_day_name_foreign
删除级联上的外键(day_name
)参考days
(name
) 在更新级联(SQL:插入member_shops
(day_name
中,member_id
)值(某事,18))