我有4张桌子
我有一个必须在正确的表中插入数据的表格。
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("/");
}
使用此代码,我可以将所有数据插入正确的表中,但是在退款表中找不到ID连接。在退款表中创建了两个不同的ID。未在“退款”表中创建的第二个ID,该ID未连接到任何客户(0),但连接到所选的服务列表。我能怎么做?Thx
您需要调试代码。第一个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