如何检索在事务中创建的值并在Laravel中将其返回到事务外部?

时间:2016-03-04 10:57:46

标签: php transactions laravel-5.2

我正在开发一个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时。两者都是空的。我怎样才能实现它?

1 个答案:

答案 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;
});