Реплика Laravel 4.2, включая дочерние элементы

Я попытался повторить строки, но безрезультатно, я получаю копии заказов без соответствующих элементов.

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:58ITEMS 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
));
}

Ответ ErrorExceptionПопробовать получить свойство необъекта
line $ 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

Любые идеи, пожалуйста

0

Решение

save() просто возвращает логическое значение, если сохранение сработало или нет. Вместо этого вы должны сделать следующее:

$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);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]