所以我想知道如何将数据插入到两个不同的表中,但 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();
}
- 1 回答
- 0 关注
- 163 浏览
添加回答
举报
0/150
提交
取消