为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
qq_笑_17 2023-04-15 20:49:20
所以我想知道如何将数据插入到两个不同的表中,但 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,我已经卡住了,所以请真的需要帮助!对不起我的英语我是法国人。
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

如果您没有企业记录,则不能插入帖子记录。

在您的情况下,您在企业之前插入帖子,这就是错误。


您的商店功能将变为:


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();

}


查看完整回答
反对 回复 2023-04-15
  • 1 回答
  • 0 关注
  • 163 浏览

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号