默认情况下无法使外键获取其引用的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