猿问

如何使用laravel将数组值插入数据库

我有组和组成员,一张表用于我只存储组名的组,第二张表是组成员,其中我有 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] 存储到 group_members 表中 user_id 字段中的 group_id 如果有 [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);

    }

我如何将此数组值存储到数据库中,您的帮助将不胜感激?

慕容3067478
浏览 311回答 2
2回答

慕少森

使用附加和多对多关系来完成。组.phpclass Group extends Model{    public function users()    {        return $this->belongsToMany('App\User', 'group_members');    }}用户名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', []));如果您想从组中删除一个或多个成员,情况也是如此:$group->users()->detach($request->get('group_members', []));

肥皂起泡泡

改变这两行$request->request->add(['group_id' => $group->id]);$this->groupMembers->create($request->only($this->groupMembers->getModel()->fillable));至$user_ids = $request->get('group_members');foreach($user_ids as $user_id){    $this->groupMembers->create(['group_id' => $group->id, 'user_id'=>$user_id]);}希望这能解决您的问题。
随时随地看视频慕课网APP
我要回答