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

标签 php mysql laravel laravel-5

我是 LARAVEL 的新手,遇到了一些问题。

我的问题是,当我将数据插入第一个表时,我可以看到它默认设置了一个 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";

}

最佳答案

您需要为要插入的数据添加外键。因此,更改这些行:

 $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";
}

关于php - 默认情况下无法使外键获取其引用的 id 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47994763/

相关文章:

php - 服务器如何同时管理不同用户的请求?

java - 我无法使用 java 通过 ssh-tunnel 连接到数据库。

mysql - 尝试使用 MAX() 聚合结果时出现奇怪的 MySQL 行为

mysql - 如何从第一个表中给定信息的一个表中选择一列,并从另一个表中选择一列

php - Dompdf 封装 laravel 中其他语言的支持

laravel - 只显示集合名称?

php - fatal error : Call to undefined function mysql_connect()

php - 在想象 php 库(imagick)中处理损坏的 URL 错误

php - 创建可写目录

php - 在 Laravel 5.2 Registry Form Update-proof 中传递参数