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

Laravel预订表单提交后,如何将主用户信息同步至关联记录?

解决预订记录同步主用户信息的问题

提交的预订表单内容

How many book : 2
Name : a
email : a@gmail.com

email#1 : b@gmail.com

当前数据库存储结果

ID : 1
Name : a
Email : a@gmail.com
Other email : NULL

ID : 2
Name : NULL
Email : NULL
Other email : b@gmail.com

期望的数据库存储结果

ID : 2
Name : a
Email : a@gmail.com
Other email : b@gmail.com

现有代码

控制器代码

$firstName = $booking->first_name;
$lastName = $booking->last_name;
foreach ($request->input('other_emails') as $email){
    Booking::create([
        'first_name'=>$firstName,
        'last_name'=>$lastName,
        'other_emails'=>$email
    ]);
    Mail::to($email)->send(new OthersEmail($isi_email1));
}

模型代码

protected $fillable = [
    'first_name',
    'last_name',
    'other_emails'    
];

修改方案

1. 更新模型的可填充字段

在模型的$fillable数组中添加email字段,确保数据库的主邮箱字段支持批量赋值:

protected $fillable = [
    'first_name',
    'last_name',
    'email',
    'other_emails'    
];

2. 修改控制器代码,同步主邮箱信息

从主预订对象中获取邮箱值,在创建每条关联记录时一并写入数据库:

$firstName = $booking->first_name;
$lastName = $booking->last_name;
$mainEmail = $booking->email; // 获取主用户的邮箱

foreach ($request->input('other_emails') as $email){
    Booking::create([
        'first_name' => $firstName,
        'last_name' => $lastName,
        'email' => $mainEmail, // 写入主邮箱信息
        'other_emails' => $email
    ]);
    Mail::to($email)->send(new OthersEmail($isi_email1));
}

说明

修改后,循环创建的每条预订记录都会包含主用户的姓名和邮箱信息,与期望结果一致。如果不需要保留初始的主记录(ID:1),可调整主记录的创建逻辑或直接删除该记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:15:34