Laravel 交易返回 null

问题描述 投票:0回答:3

我正在尝试使用数据库事务进行查询。当我的方法运行时,数据正确插入到相应的表中。但它返回 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);
php laravel laravel-5 eloquent laravel-5.7
3个回答
2
投票

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

1
投票

如果您想返回任何值,请尝试以下代码:

$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

0
投票

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

 $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;
© www.soinside.com 2019 - 2024. All rights reserved.