Laravel 4.2 复制包括子项目
Laravel 4.2 replicate including child items
我尝试复制行但没有结果,我得到了没有相应项目的订单复制。
ORDERS pk(id) auto increment
id total status date
-----+-------------+-----------+-------------
118 899.58 2 2015-03-03 00:18:58
119 38.55 2 2015-03-03 00:18:58
ITEMS pk(order_id,product_id) corresponding items childs:
order_id product_id quantity
----------+-------------+----------
118 1115 82
119 8965 12 /// ro replicate
$idnew = Order::find($idorder)->replicate()->save(); // create new OK
$idnewId = $idnew->id;/////obtain id of last insert
$itemstemp = DB::table('item')->where('order_id', '=' ,$idnewId)->get();
foreach($itemstemp as $itemte){
DB::table('item')->insert(array(
'order_id' => $itemte->order_id,
'product_id' => $itemte->product_id,
'quantity' => $itemte->quantity
));
}
响应 ErrorExceptionTrying to get 属性 of non-object
行 $idnewId = $idnew->id;
期望的输出:
ORDERS pk(id)
id total status date
-----+-------------+-----------+-------------
118 899.58 2 2015-03-03 00:18:58
119 38.55 2 2015-03-03 00:18:58
120 38.55 2 2015-03-03 00:18:58
ITEMS pk(order_id,product_id) corresponding items childs:
order_id product_id quantity
----------+-------------+----------
118 1115 82
119 8965 12
119 2255 22
120 8965 12
120 2255 22
有什么想法吗
save()
只是 returns 一个布尔值,判断保存是否有效。你应该做的是:
$new = Order::find($idorder)->replicate();
$new->save();
$itemstemp = DB::table('item')->where('order_id', '=' ,$new->id)->get();
// and so on...
另外我觉得你的逻辑有点不对。这样的事情对我来说更有意义:
$new = Order::find($idorder)->replicate();
$new->save();
$items = DB::table('item')->where('order_id', $idorder)->get();
$newItems = [];
foreach($items as $item){
$newItems[] = [
'order_id' => $new->id,
'product_id' => $item->product_id,
'quantity' => $item->quantity
];
}
DB::table('item')->insert($newItems);
我尝试复制行但没有结果,我得到了没有相应项目的订单复制。
ORDERS pk(id) auto increment
id total status date
-----+-------------+-----------+-------------
118 899.58 2 2015-03-03 00:18:58
119 38.55 2 2015-03-03 00:18:58
ITEMS pk(order_id,product_id) corresponding items childs:
order_id product_id quantity
----------+-------------+----------
118 1115 82
119 8965 12 /// ro replicate
$idnew = Order::find($idorder)->replicate()->save(); // create new OK
$idnewId = $idnew->id;/////obtain id of last insert
$itemstemp = DB::table('item')->where('order_id', '=' ,$idnewId)->get();
foreach($itemstemp as $itemte){
DB::table('item')->insert(array(
'order_id' => $itemte->order_id,
'product_id' => $itemte->product_id,
'quantity' => $itemte->quantity
));
}
响应 ErrorExceptionTrying to get 属性 of non-object 行 $idnewId = $idnew->id;
期望的输出:
ORDERS pk(id)
id total status date
-----+-------------+-----------+-------------
118 899.58 2 2015-03-03 00:18:58
119 38.55 2 2015-03-03 00:18:58
120 38.55 2 2015-03-03 00:18:58
ITEMS pk(order_id,product_id) corresponding items childs:
order_id product_id quantity
----------+-------------+----------
118 1115 82
119 8965 12
119 2255 22
120 8965 12
120 2255 22
有什么想法吗
save()
只是 returns 一个布尔值,判断保存是否有效。你应该做的是:
$new = Order::find($idorder)->replicate();
$new->save();
$itemstemp = DB::table('item')->where('order_id', '=' ,$new->id)->get();
// and so on...
另外我觉得你的逻辑有点不对。这样的事情对我来说更有意义:
$new = Order::find($idorder)->replicate();
$new->save();
$items = DB::table('item')->where('order_id', $idorder)->get();
$newItems = [];
foreach($items as $item){
$newItems[] = [
'order_id' => $new->id,
'product_id' => $item->product_id,
'quantity' => $item->quantity
];
}
DB::table('item')->insert($newItems);