我有一个包含一些数据并有两个外键的表 一个引用父表的键,另一个引用用户表的键。
我希望在删除父级时,respondent_id为设置为空,这是一项要求。
// answer forgein key
$table->integer('answer_id')->unsigned();
$table->foreign('answer_id')->references('id')->on('answers')->onDelete('cascade');
// Respondent forgein key
$table->integer('respondent_id')->unsigned();
$table->foreign('respondent_id')->references('id')->on('respondents')->onDelete('set null');
// answer forgein key
$table->integer('answer_id')->unsigned();
$table->foreign('answer_id')->references('id')->on('answers')->onDelete('cascade');
// Respondent forgein key
$table->integer('respondent_id')->unsigned();
$table->foreign('respondent_id')->references('id')->on('respondents');
为什么会这样?
答案 0 :(得分:0)
在写这个答案时我有一个想法:"该字段甚至可以为空?" 。然后我对我自己的资源说不,它不可空!
将代码更改为以下内容后;它运作得很好。
// answer forgein key
$table->integer('answer_id')->unsigned();
$table->foreign('answer_id')->references('id')->on('answers')->onDelete('cascade');
// Respondent forgein key
$table->integer('respondent_id')->unsigned()->nullable();
$table->foreign('respondent_id')->references('id')->on('respondents')->onDelete('set null');