【发布时间】:2019-09-26 22:43:08
【问题描述】:
我有组和组成员,一张表用于组,我只存储组名,第二张表是组成员,我有 user_id,group_id 字段。
我正在使用邮递员创建 API,我想插入这样的组成员详细信息:
"group_members": [1,3]
我的身体要求是:
{
"name": "Steve", // name is group name
"group_members": [1,3] // [1,3] here 1 and 3 is user_id
}
我想将 [1,3] 存储到 user_id 字段中的 group_members 表中,如果有 [1,3],则应在 user_id 字段中输入两个条目 我还附上了我的桌子的屏幕截图:
我的控制器:
DB::beginTransaction();
try{
$request->request->add(['created_by' => Auth::user()->id]);
$group = $this->group->create($request->only($this->group->getModel()->fillable));
$request->request->add(['group_id' => $group->id]);
$this->groupMembers->create($request->only($this->groupMembers->getModel()->fillable));
DB::commit();
return response([
'status' => true,
'message' => 'Group added',
], 200);
} catch(\Exception $ex) {
DB::rollback();
return response([
'status' => false,
'message' => __('messages.validation_errors'),
'errors' => $ex->getMessage(),
], 500);
}
try {
$group = $this->group->find($request->input('id'));
$request->request->add(['updated_by' => Auth::user()->id]);
$group->fill($request->all())->save();
return response(['status' => true, 'message' => 'Group updated'], 500);
} catch (\Exception $ex) {
return response(['status' => false, 'message' => 'Validation Errors', 'errors' => $ex->getMessage()], 500);
}
public function updateGroup(Request $request)
{
$validator = UserValidations::validateGroup($request->all());
if($validator->fails()) {
return response(['status' => false, 'message' => 'Validation Errors', 'errors' => $validator->errors()->all()], 500);
}
try {
$group = $this->group->find($request->input('id'));
$request->request->add(['updated_by' => Auth::user()->id]);
$group->fill($request->all())->save();
return response(['status' => true, 'message' => 'Group updated'], 500);
} catch (\Exception $ex) {
return response(['status' => false, 'message' => 'Validation Errors', 'errors' => $ex->getMessage()], 500);
}
}
【问题讨论】:
-
我的建议是使用 eloquent 关系 many to many 并使用
attach/sync方法进行保存/更新
标签: php arrays database laravel