Laravel DB::transaction 不接受变量
Laravel DB::transaction not accepting variables
你好,我有一些我无法捕捉到的错误,我正在尝试在我的项目中实现 DB::transaction(),我有 3 个表我必须插入数据,我创建了我的自己的功能来做到这一点,但我想重构我的代码以使用 laravel DB::transaction()。
我浏览了文档 Laravel docs,但出现错误,错误是它没有看到我在事务中的函数内部传递的变量
'introduction' => $request->introduction,
我得到了**未定义的变量'request'
下面是我的完整功能
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 传递给函数,
提前谢谢你
您可以在函数中使用 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]);
});
你好,我有一些我无法捕捉到的错误,我正在尝试在我的项目中实现 DB::transaction(),我有 3 个表我必须插入数据,我创建了我的自己的功能来做到这一点,但我想重构我的代码以使用 laravel DB::transaction()。 我浏览了文档 Laravel docs,但出现错误,错误是它没有看到我在事务中的函数内部传递的变量
'introduction' => $request->introduction,
我得到了**未定义的变量'request' 下面是我的完整功能
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 传递给函数, 提前谢谢你
您可以在函数中使用 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]);
});