如何在 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;
});
我正在开发一个 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;
});