グループとグループメンバーがあります。1つのテーブルはグループ名だけを格納しているグループ用で、2番目のテーブルはuser_id、group_idフィールドがあるグループメンバーです。
postmanを使用して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]がある場合はgroup_idに対してuser_idフィールドのgroup_membersテーブルに[1,3]を格納したいので、user_idフィールドに2つのエントリを入力する必要があります。テーブルのスクリーンショットも添付しました。
私のコントローラー:
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);
}
}
Group.php
class Group extends Model
{
public function users()
{
return $this->belongsToMany('App\User', 'group_members');
}
}
User.php
class User extends Model
{
public function groups()
{
return $this->belongsToMany('App\Group', 'group_members');
}
}
これで、次のようにするだけで、IDでメンバーをグループに追加できます。
$group = Group::where('name', $request->get('name'))->first();
$group->users()->attach($request->get('group_members', []));
グループから1つ以上のメンバーを削除する場合も、同じことが言えます。
$group->users()->detach($request->get('group_members', []));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加