【发布时间】:2020-07-05 05:53:57
【问题描述】:
我有表 itineraries、meals 和 itinerary_meal。
Itineraries 与meals 表有多对多关系。
当dd($request->all()) 时,它为我提供了价值:
"product_itineraries" => array:3 [▼
1 => array:6 [▼
"itinerary_title_en" => "123123"
"itinerary_title_th" => "123123"
"day_number" => "1"
"itinerary_description_en" => null
"itinerary_description_th" => null
"meal_type_id" => array:3 [▼
0 => "1"
1 => "2"
2 => "3"
]
]
我可以像这样批量插入行程:
foreach ($request->product_itineraries as $product_itinerariesKey => $product_itineraries) {
if (empty($product_itineraries)) {
continue;
}
$productItineraryData[$product_itinerariesKey]['meal_type_id'] = $product_itineraries['meal_type_id'];
$productItineraryData[$product_itinerariesKey]['product_id'] = $product->id;
$productItineraryData[$product_itinerariesKey]['itinerary_title_en'] = $product_itineraries['itinerary_title_en'];
$productItineraryData[$product_itinerariesKey]['itinerary_title_th'] = $product_itineraries['itinerary_title_th'];
$productItineraryData[$product_itinerariesKey]['day_number'] = $product_itineraries['day_number'];
$productItineraryData[$product_itinerariesKey]['itinerary_description_en'] = $product_itineraries['itinerary_description_en'];
$productItineraryData[$product_itinerariesKey]['itinerary_description_th'] = $product_itineraries['itinerary_description_th'];
$productItineraryData[$product_itinerariesKey]['created_at'] = $nowTime;
$productItineraryData[$product_itinerariesKey]['updated_at'] = $nowTime;
}
if (!empty($productItineraryData) && count($productItineraryData) > 0) {
ProductItinerary::insert($productItineraryData);
}
使用它,我现在无法批量插入相关的餐食类型,因为我没有获得产品行程 ID。 此外,我没有得到产品行程模型,因此无法使用餐()关系保存
批量插入模型及其关系有什么解决方案吗?
【问题讨论】:
-
将 insertGetId() 视为laravel.com/docs/7.x/queries#inserts
-
@KurtFriars 当使用
insertGetId($productItineraryData)而insert($productItineraryData)工作正常时,它给我一个错误说Array to string conversion。我错过了什么吗? -
我认为 insertGetId 不适用于批量插入 @KurtFriars
-
你是对的。我的道歉。这里使用数据库事务的有趣解决方案。基本上,一旦您知道插入的第一个 id 和要插入的记录数,您就知道所有的 id。 stackoverflow.com/questions/46039765/…
-
是的@KurtFriars,这似乎是解决方案之一。谢谢你。但在我的情况下,请求具有单个模型的嵌套数组,因此同时拉出相关的 id 和嵌套数组有点困难。似乎我找到的合理解决方案是在这种情况下不使用批量插入。
标签: laravel eloquent laravel-6