将数据插入到具有单个表单的两个表中。Laravel:错误违反完整性约束

所以我想知道如何将数据插入到两个不同的表中,但 linke,表 Poste(offer,ad)和公司,每个广告都链接到一个公司,我创建了两个模型,只有 1 个控制器,Post 和 Company 以及 Postecontroller。


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

            $table->bigIncrements('id');

            $table->string('nomEntreprise');

            $table->string('adresseEntreprise');

            $table->timestamps();

        });

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

            $table->increments('idPoste');

            $table->unsignedBigInteger('idEntreprise');

            $table->string('nomPoste');

            $table->text('descriptionPoste');

            $table->timestamps();

            $table->foreign('idEntreprise')

                ->references('id')

                ->on('entreprises')

                ->onDelete('cascade');


        });

public function create()

    {

        $postes = Poste::all();

        $entreprises = Entreprise::all();

        return view('postes.create', compact('postes','entreprises'));

    }


public function store(Request $request)

    {

        $data = $request->validate([

            'nomPoste'=>'required|min:3',

            'descriptionPoste'=>'required|min:3'

        ]);

        $data2 = $request->validate([

            'nomEntreprise'=>'required|min:3',

            'adresseEntreprise'=>'required|min:3'

        ]);

        Poste::create($data);

        Entreprise::create($data2);




        return back();

    }

class Poste extends Model

{



    protected $fillable = ['nomPoste','descriptionPoste','idEntreprise'];


    public function entreprise()

    {

        return $this->belongsTo(Entreprise::class,'idEntreprise');

    }

}

protected $fillable = ['nomEntreprise', 'adresseEntreprise'];


    public function poste()

    {

        return $this->hasMany(Poste::class);

    }

当我通过工厂插入数据时,它运行良好,因为我设法通过 id 显示他公司的帖子。但是插入导致我出现如下错误:违反完整性约束:1452 无法添加或更新子行:外键约束失败(projetetudiant.postes,CONSTRAINT postes_identreprise_foreign FOREIGN KEY (idEntreprise) REFERENCES entreprises (id) ON DELETE CASCADE) .


我是新来的,刚开始学习 laravel,我已经卡住了,所以请真的需要帮助!对不起我的英语我是法国人。


qq_笑_17
浏览 164回答 1
1回答

有只小跳蛙

如果您没有企业记录,则不能插入帖子记录。在您的情况下,您在企业之前插入帖子,这就是错误。您的商店功能将变为:public function store(Request $request){    $data = $request->validate([        'nomPoste'=>'required|min:3',        'descriptionPoste'=>'required|min:3'    ]);    $data2 = $request->validate([        'nomEntreprise'=>'required|min:3',        'adresseEntreprise'=>'required|min:3'    ]);    $newEnterprise = Entreprise::create($data2);    Poste::create($data + [        'idEntreprise' => $newEnterprise->id    ]);    return back();}
打开App,查看更多内容
随时随地看视频慕课网APP