【问题标题】:Laravel transaction return nullLaravel 事务返回 null
【发布时间】:2019-05-14 08:20:17
【问题描述】:

我正在尝试使用 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);

【问题讨论】:

    标签: laravel laravel-5 eloquent laravel-5.4 laravel-5.7


    【解决方案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
    

    【讨论】:

    • 当你只是返回闭包返回时,为什么要分配$result 变量?
    【解决方案2】:

    通过返回值 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;
    

    【讨论】:

      【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 2018-05-23
        • 2019-09-24
        • 1970-01-01
        • 2017-08-05
        • 2019-04-17
        • 1970-01-01
        • 2023-03-28
        • 2022-06-12
        • 2014-07-30
        相关资源
        最近更新 更多