如何在laravel中的一个api中添加和更新

我正在尝试使用相同的 API 添加和更新,目前,我可以添加,但我不清楚如何使用相同的 API 进行更新。


我正在添加针对 id 的文件夹,我的身体反应如下所示:


{

    "id": "2",

    "folder_detail": [1,3,4]

}

我可以针对 id 2 添加 id 1,3 和 4 的文件夹,但是下次当我使用文件夹 [1,3,5] 使用相同的 API 时,它应该更新文件夹详细信息而不应该再次添加,我可以通过制作单独的 API 来做到这一点但我想在一个 API 中做到这一点。


我的控制器代码:


 try {


            $folder = Doctor::where('id', $request->get('id'))->first();

            $folder->doctor()->attach($request->get('folder_detail', []));


            DB::commit();


            return response([

                'status' => true,

                'message' => 'Folder detail added',

            ], 200);


        } catch (\Exception $ex) {

            DB::rollback();

            return response([

                'status' => false,

                'message' => __('messages.validation_errors'),

                'errors' => $ex->getMessage(),

            ], 500);

        }

    }


    public function doctor()

    {

        return $this->belongsToMany('App\Folder', 'folder_details');

    }

您的帮助将不胜感激?


倚天杖
浏览 137回答 2
2回答

翻过高山走不出你

好的,在我们在评论中来回讨论之后,我认为您正在寻找这样的东西:$folders = $request->get('folder_detail', []);foreach($folders as $folder) {    $record = Folder::firstOrNew(['id', $folder]);    $record->doctor_id = $request->id;   // You can add your own records here, or use the 'fill' function}因此,通过这种方式,您可以遍历所有文件夹。检查具有特定 ID 的文件夹是否已经存在,如果不存在,则创建一个新文件夹。该医生通过您记录中的doctor_id 链接。

月关宝盒

查找记录如果存在则更新否则创建$post = $request->all();$doctor = Doctor::find($post['id']);if($doctor){    $doctor->update([        //your data for update doctor model    ]);    //remove old folders which is related with this doctor    Folder::where('doctor_id', $doctor->id)->delete();    //add current data of folder    if(!empty($post['folder_detail'])){        foreach($post['folder_detail'] as $folder){            Folder::create([                'doctor_id' => $doctor->id,                'folder_detail' => $folder            ]);        }    }    //return your response here} else {    $doctor = Doctor::create([        //data for create doctore    ]);    //add current data of folder    if(!empty($post['folder_detail'])){        foreach($post['folder_detail'] as $folder){            Folder::create([                'doctor_id' => $doctor->id,                'folder_detail' => $folder            ]);        }    }    //return your response here}
打开App,查看更多内容
随时随地看视频慕课网APP