【问题标题】:Laravel DB::transaction not accepting variables [duplicate]Laravel DB::transaction 不接受变量 [重复]
【发布时间】:2020-11-02 13:27:47
【问题描述】:

美好的一天,请我有一些我无法捕捉到错误的东西,我正在尝试在我的项目中实现 DB::transaction(),我有 3 个表我必须插入数据,我创建了自己的函数来以前做过,但我想重构我的代码以使用 laravel DB::transaction()。 我浏览了文档Laravel docs,但是我遇到了一个错误,错误是它没有看到我在事务中的函数内部传递的变量

'introduction' => $request->introduction,

我收到**未定义的变量“请求” 下面是我的完整功能

  public function store(Request $request)
    {
        $data = $request->all();

        $validator = Validator::make($data, [
            'name' => 'required|max:255',
            'introduction' => 'required|max:255',
            'budget' => 'required'
        ]);

        if ($validator->fails()) {
            return response(['error' => $validator->errors(), 'Validation Error']);
        }

        $id = Auth::id();

        // $project = Project::create($data);


        DB::transaction(function () {
            $project = Project::create([
                'name' => $request->name,
                'introduction' => $request->introduction,
                'budget' => $request->budget

            ]);
            DB::table('approvals')->insert(['project_id' => $project->id]);
            DB::table('agreements')->insert(['project_id' => $project->id]);
        });
    }

如何将 $request->name 传递给函数, 提前谢谢你

【问题讨论】:

    标签: php database laravel transactions


    【解决方案1】:

    您可以在函数中使用use,如下所示:

    DB::transaction(function () use($request) {
        $project = Project::create([
            'name' => $request->name,
            'introduction' => $request->introduction,
            'budget' => $request->budget
    
        ]);
        DB::table('approvals')->insert(['project_id' => $project->id]);
        DB::table('agreements')->insert(['project_id' => $project->id]);
    });
    

    【讨论】:

      猜你喜欢
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 2020-02-24
      • 2014-05-19
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多