0

i have a question regarding a form that im building, basically i have 2 tables, where one table us "users" where is stored email, password, account_type,etc. Than i have another table called "personal_data" where is stored more information regarding the user, like address, nationality, and other info.

The personal data is manage only when the user registers, than after registration he goes to a page where he fills the personal information. In the table "personal_data" i have a column called "user_id" where make the relations between the tables.

My question is now regarding when the user goes fill the information in the form, im using ajax.

Code example:

$.ajax({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },

                method: 'PUT',//??? PUT OR POST
                url: '{{url('user/savedata')}}/{{$user->id}}',
                data: {
                    ...

                }


            }).done(function(response){
                console.log(response);

            }).fail(function(response) {

                var errors = response.responseJSON;
                $.each( errors, function(i, n){

                    //Show error message

                });
            });

My question is not when i should use PUT or POST but how to manage in my ajax when i should use POST or PUT, since the user can be inserting the data for the first time and in this case it must be POST, but now imagine if the record already exist, in this case he just only need to update and in the ajax use PUT.

So how can i manage this situation? How to now when the user already have a record in the table? What is the best practice in this case?

Pedro
  • 1,459
  • 6
  • 22
  • 40
  • http://stackoverflow.com/questions/630453/put-vs-post-in-rest. Put will update and create if it has to (and is set up properly) – ntgCleaner Mar 18 '17 at 17:22

2 Answers2

0

Handle this situation before post check is data is already exist if then show err msg already exist else add, measure difference b/w post in put, PUT take is as url, but POST only takes endpoint.

RANVIR GORAI
  • 1,226
  • 11
  • 10
0

Send a request which you are already doing, Now use updateOrCreate, It will create a record if there isn't one against the authenticated user, If have then it will update.

    $newUser = \App\UserInfo::updateOrCreate([
        'user_id'   => Auth::user()->id
    ],[
        'about'     => $request->get('about'),
        'sec_email' => $request->get('sec_email'),
        'gender'    => $request->get("gender"),
    ]);
Gammer
  • 5,453
  • 20
  • 78
  • 121