html - 不能将多个 FormItems 数据存储到 DB
问题描述
我正在使用Laravel 5.7.*
.
我有一个form
and it's formItems
, Like form HasMany formItems
and formItems belongsTo form
,当我点击提交时,我看到DB
只formItems
存储了一个,尽管我尝试存储多个formitem
。
这是我的store method
:
public function store(Request $request) {
$formItems = collect();
// dd($request);
// dd($request->formItems);
// // dd($familymember);
foreach($request['formItems'] as $formItem) {
$formItems->push(new FormItem([
'family_name' => $formItem['family_name'],
'family_phone' => $formItem['family_phone'],
]));
}
$form = Form::create([
'user_phone' => $request['user_phone'],
'user_cnic' => $request['user_cnic'],
]);
$form->formItems()->saveMany($formItems);
}
这是我的HTML formItems
:
<form>
<fieldset>
<table class="table table-bordered fieldGroup">
<tbody>
<tr>
<td><input type="text" name="formItems[0][family_name]" class="form-control form-control-sm" placeholder="Full Name"></td>
<td><input type="text" name="formItems[0][family_phone]" class="form-control form-control-sm" placeholder="Phone"></td>
<td colspan="3">
<a href="javascript:void(0)" class="btn btn-success addMore"><span class="glyphicon glyphicon glyphicon-plus" aria-hidden="true"></span>+</a>
</td>
</tr>
</tbody>
</table>
<div class="form-group">
<div class="text-center">
<button class="btn btn-success" type="submit">Submit</button>
</div>
</div>
</fieldset>
</form>
<fieldset form="formId">
<table class="table table-bordered fieldGroupCopy" style="display: none;">
<tbody>
<tr>
<td><input type="text" name="formItems[0][family_name]" class="form-control form-control-sm" placeholder="Full Name"></td>
<td><input type="text" name="formItems[0][family_phone]" class="form-control form-control-sm" placeholder="Phone"></td>
<td><a style="align-items: center; justify-content: center; display: flex;" href="javascript:void(0)" class="btn btn-danger remove"><span class="glyphicon glyphicon glyphicon-remove" aria-hidden="true"></span>x</a></td>
</tr>
</tbody>
</table>
</fieldset>
From
模型:
class Form extends Model
{
protected $fillable = [
'user_phone',
'user_cnic',
];
protected $with = [
'formItems',
];
public function formItems()
{
return $this->hasMany(FormItem::class);
}
}
FromItem
模型:
class FormItem extends Model
{
protected $fillable = [
'form_id',
'family_name',
'family_phone',
];
public function form()
{
return $this->belongsTo(Form::class);
}
}
dd($request->all())
结果:
array:12 [▼
"_token" => "tEDC2rrDXInWeKQzFFSyk0gRoiC19Dr4HIqpf5P1"
"user_phone" => null
"user_cnic" => null
"user_dob" => null
"user_gender" => "male"
"user_landmark" => null
"user_hfname" => null
"user_address" => null
"user_name" => null
"user_family_no" => "1"
"user_email" => null
"formItems" => array:1 [▼
0 => array:6 [▼
"family_relation" => "father"
"family_name" => null
"family_dob" => null
"family_hfname" => null
"family_phone" => null
"family_email" => null
]
]
]
解决方案
请尝试以下代码
public function store(Request $request) {
$form = Form::create([
'user_phone' => $request['user_phone'],
'user_cnic' => $request['user_cnic'],
]);
$form_items = [];
foreach($request['formItems'] as $form_item) {
$form_items[] = new FormItem([
'form_id' => $form->id,
'family_name' => $form_item['family_name'],
'family_phone' => $form_item['family_phone']
]);
}
$form->formItems()->saveMany($form_items);
}
推荐阅读
- python - tweepy上的视频上传
- python - 生成行中没有 2 个零或 3 个 1 的二进制序列
- ruby-on-rails - 重定向到上一页但更改语言
- react-native - React Native:无法捕获抛出的错误
- flutter - 尝试在颤振的 youtube_extractor 中调用 group(0) 为 null
- swift - 共享 SwiftUI 视图的屏幕截图导致崩溃
- amazon-web-services - 如何降低 NAT 流量成本 - Lambda 和 SQS
- java - 出现未经授权的错误:凭据错误
- json - 从 API 链接下载 JPG 并给它一个变量名
- r - 无法将 Json 文件中的数据提取到 R 数据框中