Laravel 交易 return 空

Laravel transaction return null

我正在尝试使用数据库事务进行查询。当我的方法 运行 将时间数据正确插入相应的 table.but 时,它 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);
    },3);

如果您想 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);
    return $service;
},3);
return $result

通过返回值取代函数来尝试下面的代码。

 $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;

DB::transaction() returns 无论闭包传递给它什么 returns。由于您的闭包没有 return 任何东西,因此 DB::transaction() 将 return 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);