我很难检索一个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