如何在 Laravel 中检索交易内部创建的价值和 return 交易外部创建的价值?

How to retrieve value created inside transaction and return it outside transaction in Laravel?

我正在开发一个 Laravel 项目。我正在使用 Laravel 5.2。我正在使用数据库并且一次处理多个查询。所以我正在使用 Laravel 内置的数据库事务功能。但我的问题是我无法检索数据库中最后插入的 id 和 return 之类的值。

这就是我使用交易的方式

$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 时。两者都是空的。我怎样才能实现它?

您有几个选择。您可以通过引用将 $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;
});

或者您可以 return $item 来自交易:

$item = DB::transaction(function() use ($item_code,$name,$id){
    $item = new Item;
    $item->name = $name;
    $item->save();

    return $item;
});