我正在尝试使用db事务进行查询。当我的方法运行时,时间数据正确插入到相应的表中。但它返回null。
我的代码
return $result = DB::transaction(function() use ($attributes) {
$service = $this->service->create($attributes);
$visibilityAttributes = $attributes['dropdown_option_id'];
$visibilityAttributes = array_map('intval', $visibilityAttributes);
$service->visibility()->sync($visibilityAttributes);
},3);
DB::transaction()
返回传递给它的闭包返回的任何内容。由于您的闭包没有返回任何内容,DB::transaction()
将返回null
。您需要在闭包中添加一个return
语句。
return $result = DB::transaction(function() use ($attributes) {
$service = $this->service->create($attributes);
$visibilityAttributes = $attributes['dropdown_option_id'];
$visibilityAttributes = array_map('intval', $visibilityAttributes);
$service->visibility()->sync($visibilityAttributes);
// This value will be returned from DB::transaction().
return $service;
},3);
如果您想返回任何值,请尝试以下代码:
$result = DB::transaction(function() use ($attributes) {
$service = $this->service->create($attributes);
$visibilityAttributes = $attributes['dropdown_option_id'];
$visibilityAttributes = array_map('intval', $visibilityAttributes);
$service->visibility()->sync($visibilityAttributes);
return $service;
},3);
return $result
通过返回值ouside函数来尝试下面的代码。
$result = DB::transaction(function() use ($attributes) {
$service = $this->service->create($attributes);
$visibilityAttributes = $attributes['dropdown_option_id'];
$visibilityAttributes = array_map('intval', $visibilityAttributes);
$service->visibility()->sync($visibilityAttributes);
},3);
return $result;