You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Livewire 动态表单存储时无法附加关联数据问题求助

解决方法

前置配置

  • 先确认Emp_sched模型已经定义好和日程子模型的一对多关联,假设你存储单条日程的模型名为Schedule,子表中含emp_sched_id外键字段:
//  app/Models/Emp_sched.php
public function schedules()
{
    return $this->hasMany(Schedule::class);
}
  • 确认Schedule模型的$fillable属性已经添加所有需要批量赋值的字段:
// app/Models/Schedule.php
protected $fillable = ['corsdes', 'c_time', 'day', 'room', 'emp_sched_id'];

修正后的store方法代码

你原有代码的问题是循环内没有触发数据写入操作,也没有将子日程和主记录绑定关联,修改后代码如下:

public function store()
{
    // 数据验证,可根据实际业务调整规则
    $validated = $this->validate([
        'faculty_id' => 'required|exists:faculties,id',
        'sem' => 'required|integer',
        'sy' => 'required|string',
        'createScheds' => 'required|array',
        'createScheds.*.corsdes' => 'required|string',
        'createScheds.*.c_time' => 'required|string',
        'createScheds.*.day' => 'required|string',
        'createScheds.*.room' => 'required|string',
    ]);

    // 写入主表记录
    $order = Emp_sched::create([
        'faculty_id' => $validated['faculty_id'],
        'sem' => $validated['sem'],
        'sy' => $validated['sy'],
    ]);

    // 批量写入关联的日程记录,自动绑定主表ID
    $order->schedules()->createMany($validated['createScheds']);

    return 'Schedules Saved!';
}

补充说明

如果你需要单条循环写入(比如需要对每条日程做单独处理),可以把createMany部分替换为如下代码,效果完全一致:

foreach ($validated['createScheds'] as $sched) {
    $order->schedules()->create($sched);
}

内容的提问来源于stack exchange,提问作者itsme joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:24:03