我刚刚开始使用eloquent wand,我将通过angularJS将以下对象发送到我的后端
item:
{
id: 1,
cookie_id: "c312b3faf70d3bc39b9563b340a1094bf6f58891",
user_id: null,
restaurant_id: 11,
restaurant_name: "Gaucho",
restaurant_uname: "gaucho",
city: "abuja",
location: "asokoro",
time: "12:45:00",
updated_at: "2016-02-05 11:37:05",
created_at: "2016-02-05 10:50:48",
cart_items: [
"id": 159,
"name": "Empanadas (Choice of 2)",
"description": "Choice of Diced Beef; Spinach, Stilton and Onion; or Smoked Ham and Mozzarella",
"price": 700,
"available": 1,
"created_at": "2016-01-31 16:50:31",
"updated_at": "2016-01-31 16:50:31",
"menu_category_id": 41,
"restaurant_id": 11,
"cart_modifier_items": [
{
"id": 34,
"name": "Diced Beef",
"price": 0,
"created_at": "2016-02-01 01:04:08",
"updated_at": "2016-02-01 01:04:08",
"menu_modifier_group_id": 9,
"restaurant_id": 11,
"menu_item_id": 159,
"selected": true
},
{
"id": 35,
"name": "Smoked Salmon & Mozzarella",
"price": 0,
"created_at": "2016-02-01 01:04:37",
"updated_at": "2016-02-01 01:04:37",
"menu_modifier_group_id": 9,
"restaurant_id": 11,
"menu_item_id": 159,
"selected": true
}
]
]
}如您所见,我有一个包含多个cart_items的parent项,这些cart_items又包含多个cart_modifier_items
我的机型详情(3张表);
Cart
hasMany cart_items
CartItem
belongsTo Cart
hasMany cart_modifier_items
CartModifierItem
belongsTo CartItem如何接受此项通过cart_items和cart_modifier_items进行添加和循环,并使用eloquent将其添加到表中
cart to cart Table all cart_items to cart_items Table all cart_modifier_items to the cart_modifier_items Table
我想我需要3个独立的DB请求?
如有任何建议/指导,欢迎光临。
这就是我到目前为止所做的;
public function addItem (Request $request) {
$item = $request->input('item');
$rest_id = $request->input('id');
$cookie_id = $request->input('basket');
$cart = Cart::where(['cookie_id' => $cookie_id, 'restaurant_id' => $rest_id])->get();
$cart_id = $cart->id;
$cart_items = $item['cart_items'];
foreach($cart_items as $cart_item) {
CartItem::create([
'item_id' => $cart_item['id'],
'restaurant_id' => $cart_item['restaurant_id'],
'name' => $cart_item['name'],
'description' => $cart_item['description'],
'price' => $cart_item['price'],
'qty' => $cart_item['qty'],
'available' => $cart_item['available'],
'cart_id' => $cart_id,
'cart_cookie' => $cookie_id,
]);
}
$cart_modifier_items = $cart_items['cart_modifier_items'];
foreach($cart_modifier_items as $cart_modifier_item) {
CartModifierItem::create([
'item_id' => $cart_modifier_item['id'],
'cart_item_id' => $cart_modifier_item['menu_item_id'],
'name' => $cart_modifier_item['name'],
'price' => $cart_modifier_item['price'],
'cart_id' => $cart_id,
]);
}
}发布于 2016-02-05 22:04:53
首先,确保您的字段在各自模型的可填充数组中。
// let save the item Record
// am seeing an id in the object so lets update if id exist or
// create if it does not
$id = isset($request->input('item.id')) ? $request->input('item.id') : null;
$cart = Cart::updateOrCreate(['id'=>$id],$request->input('item'))
// now let save or update cart_items
foreach($request->input('item.cart_items') as $cart_item){
$cart_item_id = isset($cart_item['id']) ? $cart_item['id'] : null;
$cartItem = $cart->cart_items()->updateOrCreate(['id'=>$cart_item_id],$cart_item);
// now let save for cart_modifier_items
foreach($cart_item['cart_modifier_items'] as $cart_modifier_item){
$cart_modifier_item_id = isset($cart_modifier_item['id']) ? $cart_modifier_item['id'] : null;
$cartModifierItem = $cartItem->cart_modifier_items()->updateOrCreate(['id'=>$cart_modifier_item_id],$cart_modifier_item);
}
}您已经了解了如何遍历记录并更新或创建记录。接下来您可能会遇到的唯一问题是如何处理已从前端删除/移除的已保存数据。这要由你来处理。干杯。
https://stackoverflow.com/questions/35223534
复制相似问题