我正在开发一个Laravel项目。我正在使用Laravel 5.2。我正在使用数据库,我一次操作多个查询。所以我使用的是Laravel内置的数据库事务功能。但我的问题是我无法检索像数据库中最后插入的id之类的值并返回它。
这就是我使用交易的方式
$item_code = "";
$id = "";
DB::transaction(function() use ($item_code,$name,$id){
$item_code = $this->generateItemCode();
$item = new Item;
$item->name = $name;
$item->save();
$id = $item->id;
})
echo $item_code;
echo $id;
在我的代码中,当我打印$ item_code和$ id时。两者都是空的。我怎样才能实现它?
答案 0 :(得分:2)
你有几个选择。您可以通过引用将$item_code
和$id
传递到闭包中(请注意&符号&)
DB::transaction(function() use (&$item_code, $name, &$id){
$item_code = $this->generateItemCode();
$item = new Item;
$item->name = $name;
$item->save();
$id = $item->id;
});
或者您可以从交易中返回$item
:
$item = DB::transaction(function() use ($item_code,$name,$id){
$item = new Item;
$item->name = $name;
$item->save();
return $item;
});