laravel - 具有关系和插入的 laravel 表
问题描述
我有 4 张桌子
- 客户:有客户的数据。这张桌子有很多(退款)
- 退款:带有各种要求的数据。此表 belongsTo(Customers) AND belongsToMany(Services)
- 服务:带有服务列表。此表属于ToMany(退款)
- Refunds-Services:退款和服务的桥接表
我有一个必须在正确的表中插入数据的表单。
public function storeRefunds(RefundsPost $request){
DB::beginTransaction();
$customers = Customers::create($request->all());
$refunds = $customers->refunds()->create([
'date_ref' => request('date_ref'),
'status_ref' => request('stato'),
]);
$tipo = $request->input('tipo', []);
$importo = $request->input('importo', []);
$refunds = Refunds::create($request->all());
for ($i=0; $i < count($tipo); $i++) {
if ($tipo[$i] != '') {
$refunds->services()->attach($tipo[$i], [
'services_id' => $tipo[$i],
'services_amount' => $importo[$i]
]);
}
}
return redirect("/");
}
使用此代码,我可以将所有数据插入正确的表中,但在 Refunds 表中找不到 ID 连接。Refunds 表中创建了两个不同的 ID。在 Refunds 表中创建的第二个 ID 未连接到任何客户 (0),但连接到选择的服务列表。我能怎么做?谢谢
解决方案
你需要调试你的代码。首先Refund
在这一行创建$refunds = $customers->refunds()->create
,它属于Customer
,第二个Refund
在这里创建:$refunds = Refunds::create($request->all());
它与任何无关Customer
,但与Service
(你在for
循环中执行此操作)相关。顺便说一句,您的tipo
输入不是多个([]
如果您期望它可以是多个值,则应该是),并且for
循环在这种情况下毫无意义。
删除其中一种Refunds::create
方法,将您的数据带到预期的视图和使用createMany()
方法。
Laravel 文档中的更多信息:https ://laravel.com/docs/7.x/eloquent-relationships#the-create-method
推荐阅读
- postgresql - 表“cloudsqladmin.public.heartbeat”的自动真空
- java - Gson 格式 Java 对象列表到所需的 JSON 格式
- ios - 提交列表中缺少“.pbxproj”文件
- c# - GRPC 性能与 WCF 性能
- java - 如何比较Kafka中的流记录
- python - 在 Python 中,按照下面提到的代码写入文本文件时出现空白行的原因是什么?
- oracle - DB Link 抛出 ORA-28511:丢失 RPC 连接到使用 SID 的异构远程代理
- amazon-web-services - 如何获取 Terraform 计数的值
- javascript - 如何以角度形式修复“无法读取未定义的属性'选项'”?
- python - python IndexError:jupyter中标量变量的索引无效