Laravel 5 动态输入字段保存与数据库的关系
Laravel 5 dynamic input fields saving relation to database
我有一个名为 name="step[]"
的动态输入字段。使用 dd 提交表单并显示 $request->step
时,我得到:
array:3 [
0 => "Test Step 1"
1 => "Test Step 2"
2 => "Test Step 3"
]
所以它是一个数组。现在,当我想使用以下方式插入数据时:
$project = new Project;
$project->name = $request->name;
$project->save();
$project->steps()->saveMany($request->step);
我收到这个错误:
Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, string given
项目模型:
public function steps()
{
return $this->hasMany('App\Step');
}
我的目标是创建一个新的Project
并将其保存到数据库中,并将所有steps
保存在我的Step
table中。所以每个Project都有很多步骤。不知道为什么我会收到上述错误,因为我正在传递一个数组?
我通常使用foreach 循环实现。您的关系方法看起来不错。这个有用吗?
foreach($request->steps as $step) {
$project->steps()->create(['step' => $step]);
}
您尝试过使用附加方法吗?
$project->steps()->attach($resquest->input('steps'));
我有一个名为 name="step[]"
的动态输入字段。使用 dd 提交表单并显示 $request->step
时,我得到:
array:3 [
0 => "Test Step 1"
1 => "Test Step 2"
2 => "Test Step 3"
]
所以它是一个数组。现在,当我想使用以下方式插入数据时:
$project = new Project;
$project->name = $request->name;
$project->save();
$project->steps()->saveMany($request->step);
我收到这个错误:
Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, string given
项目模型:
public function steps()
{
return $this->hasMany('App\Step');
}
我的目标是创建一个新的Project
并将其保存到数据库中,并将所有steps
保存在我的Step
table中。所以每个Project都有很多步骤。不知道为什么我会收到上述错误,因为我正在传递一个数组?
我通常使用foreach 循环实现。您的关系方法看起来不错。这个有用吗?
foreach($request->steps as $step) {
$project->steps()->create(['step' => $step]);
}
您尝试过使用附加方法吗?
$project->steps()->attach($resquest->input('steps'));