默认情况下无法使外键获取其引用的id值

我是LARAVEL中的新成员,并且出现了一些问题。默认情况下无法使外键获取其引用的id值

我的问题是,当我将数据插入到第一个表,我可以看到,它在默认情况下解决一个id,但是当我将数据插入到第二个表我不断收到此错误:

SQLSTATE[HY000]: General error: 1364 Field 'etudiant_id' doesn't have a default value

什么我应该如何给外键第一个表的ID号?

这是我的架构:

第一表-etudiant-:

public function up() 

{

Schema::create('etudiants', function (Blueprint $table) {

$table->increments('id');

$table->string('nom');

$table->timestamps();

});

}

第二表-bac2-:

public function up() 

{

Schema::create('bac2', function (Blueprint $table) {

$table->increments('id');

$table->integer('etudiant_id')->unsigned();

$table->foreign('etudiant_id')->references('id')->on('etudiants')-

>onDelete('cascade') ;

$table->date('anne_bac2');

$table->timestamps();

});

}

这是我的插入功能:

function insert(Request $req){ 

$nom = $req->input('name');

$data= array('nom'=>$nom);

$anne_bac2 = $req->input('anne_bac2');

$data2= array('anne_bac2'=>$anne_bac2);

DB::table('etudiants')->insert($data);

DB::table('bac2')->insert($data2);

return "success";

}

回答:

You nee d将外键添加到您尝试插入的数据中。因此,改变这些行:

$data2= array('anne_bac2'=>$anne_bac2); 

DB::table('etudiants')->insert($data);

DB::table('bac2')->insert($data2);

要:

$etudiantId = DB::table('etudiants')->insertGetId($data); 

$data2 = ['anne_bac2' => $anne_bac2, 'etudiant_id' => $etudiantId];

DB::table('bac2')->insert($data2);

或者更好的重构整个方法:

function insert(Request $request) 

{

$etudiantId = DB::table('etudiants')->insertGetId(['nom' => $request->name]);

DB::table('bac2')->insert(['anne_bac2' => $request->anne_bac2, 'etudiant_id' => $etudiantId]);

return "success";

}

以上是 默认情况下无法使外键获取其引用的id值 的全部内容, 来源链接: utcz.com/qa/266075.html

回到顶部