我很難檢索一個Eloquent
模型,並通過它,然後將其添加到另一個表。重申通過數組並添加到數據庫 - Laravel/Eloquent/PHP
所以這裏是我的查詢;
$cart = Cart::with('cartItems','cartItems.cartModifierItems')->where(['vcode' => $code, 'cookie_id' => $cookie])->first();
這將檢索下面;
[
{
"id": 14,
"cookie_id": "2e5c22eba9ef7affe78b34e10d35f89dd5fbdd3b",
"user_id": 3,
"restaurant_id": 11,
"restaurant_name": "Gaucho",
"restaurant_uname": "gaucho",
"location": "asokoro",
"city": "abuja",
"date": "2016-02-11",
"time": "12:00:00",
"vcode": "5960010",
"created_at": "2016-02-09 13:57:34",
"updated_at": "2016-02-13 02:29:56",
"cart_items": [
{
"id": 88,
"item_id": 159,
"restaurant_id": 11,
"cart_cookie": "2e5c22eba9ef7affe78b34e10d35f89dd5fbdd3b",
"name": "Empanadas (Choice of 2)",
"description": "Choice of Diced Beef; Spinach, Stilton and Onion; or Smoked Ham and Mozzarella",
"price": 700,
"qty": 5,
"available": 1,
"created_at": "2016-02-10 20:42:32",
"updated_at": "2016-02-11 07:07:51",
"cart_id": 14,
"cart_modifier_items": [
{
"id": 76,
"item_id": 34,
"name": "Diced Beef",
"price": 50,
"created_at": "2016-02-10 20:42:32",
"updated_at": "2016-02-10 20:42:32",
"cart_item_id": 88,
"cart_id": 14
},
{
"id": 77,
"item_id": 35,
"name": "Smoked Salmon & Mozzarella",
"price": 50,
"created_at": "2016-02-10 20:42:32",
"updated_at": "2016-02-10 20:42:32",
"cart_item_id": 88,
"cart_id": 14
}
]
}
]
}
]
正如你可以看到有3個級別;
頂層是cart
中層爲cart_items
底層是cart_modifier_items
cart
可以包含多個cart_items
cart_items
可以包含多個cart_modifier_items
我試圖做的是採取這種輸出並將其複製到相同的表中; 該車型也是相同的
order
,order_items
,order_item_modifiers
頂層是order
中層是order_items
底部水平order_item_modifiers
order
可以包含多個order_items
order_items
可以包含多個order_item_modifiers
這就是我迄今爲止所做的;
$order = Order::create([
'order_id' => $order_number,
'date' => $cart['date'],
'time' => $cart['time'],
'total' => $total,
'subtotal' => $subtotal,
'order_status_id' => 1,
'customer_id' => $id,
'restaurant_id' => $cart['restaurant_id'],
])->id;
if (!empty($cart['cart_items'])) {
foreach($cart['cart_items'] as $order_item) {
$orderItem = OrderItem::create([
'item_id' => $order_item['id'],
'name' => $order_item['name'],
'description' => $order_item['description'],
'price' => $order_item['price'],
'qty' => $order_item['qty'],
'restaurant_id' => $order_item['restaurant_id'],
'order_id' => $order,
])->id;
if (!empty($order_item['cart_modifier_items'])) {
foreach ($order_item['cart_modifier_items'] as $order_modifier_item) {
OrderItemModifier::create([
'item_id' => $order_modifier_item['id'],
'name' => $order_modifier_item['name'],
'price' => $order_modifier_item['price'],
'order_id' => $order,
'order_item_id' => $orderItem,
]);
}
}
}
}
用我的代碼我得到的是order
。在DB
中不會創建order_items
和order_item_modifiers
。我也沒有從laravel
得到任何錯誤我肯定是做錯了我的循環或我如何訪問內部數組。任何幫助讚賞。
您的''$ fillable''數組是否包含批量賦值字段? – arma
@arma是所有在我的「模型」中聲明的 –
您的查詢是否實際返回對象數組,或者它只是您的調試輸出?看起來應該是'$ cart-> id''和'$ order_item-> id''和'$ order_modifier_item-> id''。 – arma