3 回答

TA贡献1820条经验 获得超9个赞
您应该尝试以下操作。我在小提琴中稍微调整了你的代码。不是将所有内容都推送到同一个数组中,而是将每个元素存储在一个单独的数组中。在小提琴中,您可以找到适应代码。在您的控制器中,您应该执行以下操作。您还应该删除 Issue $issue 因为您没有使用它。
public function store(Request $request, Task $task)
{
//
foreach ($request->issue_name as $index => $name) {
$task->issues()->create([
'issue_name' => $name,
'issue_time' => $request->issue_time[$index],
'issue_date' => $request->issue_date[$index],
'issue_type' => $request->issue_type[$index]
]);
}
return back();
}
使用删除按钮解决您的问题。添加到您的班级行,例如“删除此字段”。并调整您的 javascript 代码以删除字段:
$('#dynamicFields').on('click', '.remove-fields', function(){
$('.remov-this-field').remove(); i--;
})

TA贡献1777条经验 获得超10个赞
使用内置的 Eloquent 方法对您有利。首先,定义关系:
class Task
{
public function issues()
{
return $this->hasMany(Issues::class);
}
{
class Issue
{
public function task()
{
return $this->belongsTo(Task::class);
}
{
接下来写一个好帮手的方法。请注意,该create()方法已经接受了一个数组输入,因此您不必foreach遍历所有数组键:
class Task
{
...
public function addIssue($issue)
{
return $this->issues()->create($issue);
}
}
可以简化控制器逻辑,这是进行一些服务器端验证的好机会:
public function store(Request $request, Task $task)
{
$attributes = request()->validate([
// issue validation rules here
]);
$task->addIssue($attributes);
return back();
}

TA贡献2019条经验 获得超9个赞
您可以尝试在表单中添加隐藏字段,您应该将该字段的值设置为 task_id,然后在您提交表单时将其传递给 Controller。
我认为在那之后你的第一种方法应该可以正常工作。
- 3 回答
- 0 关注
- 328 浏览
添加回答
举报