Как разбить основной запрос в postman — используя laravel

#arrays #json #laravel

#массивы #json #laravel

Вопрос:

Я пытаюсь разбить мой запрос тела от postman с 1 объекта на несколько объектов, в настоящее время мой Json выглядит следующим образом:

       {
"email": "shahzad@ovadamd.com",
"password": "admin123",
"password_confirmation": "admin123",
"status": 0,
"first_name": "Shahzad",
"middle_name": "Hussain",
"last_name": "Shah",
"date_of_birth": "2015-01-01",
"gender": "M",
"area_id": 1,
"address": "Minhatten NY",
"city": "New York",
"state": "Washington",
"zip": "12312",
"fax": "111-111-1111",
"phone_extension": "2471",
"work_phone": "111-111-1111",
"phone_no": "111-111-1111",
"emergency_contact": "111-111-1111",
"social_security": "111-11-1111",
"module_id": 1,
"role_id": 1,
"speciality_id": 1,
"facility_id": 1,
"priv_title": "can edit doctor",
"priv_key": "ced",
"display_group": "Doctor",
"prev_id" :1
   }
  

и я хочу разделить этот json дальше, как показано ниже.

       {
"user_profile": {
    "email": "shahzadg@ovadamd.com",
    "password": "admin123",
    "password_confirmation": "admin123",
    "status": 0,
    "first_name": "Shahzad",
    "middle_name": "Hussain",
    "last_name": "Shah",
    "date_of_birth": "2015-01-01",
    "gender": "M",
    "area_id": 1,
    "address": "Minhatten NY",
    "city": "New York",
    "state": "Washington",
    "zip": "12312",
    "fax": "111-111-1111",
    "phone_extension": "2471",
    "work_phone": "111-111-1111",
    "phone_no": "111-111-1111",
    "emergency_contact": "111-111-1111",
    "social_security": "111-11-1111",
    "module_id": 2,
    "role_id": 1
    },

"prev":{

    "speciality_id": 1,
    "facility_id": 1,
    "priv_title": "can edit doctor",
    "priv_key": "ced",
    "display_group": "Doctor",
    "prev_id" :1
}
     }
  

и в моем контроллере я создал переменную user_profile и prev, а затем я объединяю:

 public function register(Request $request) {


    $body = $request->all();

    $userProfile = $body['user_profile'];
    $userPrev = $body['prev'];

    $bodyObj = array_merge($userProfile, $userPrev);
    $bodyObj['token'] = $body['token'];

    $validator = UserValidations::validateUser($bodyObj);

    if ($validator->fails()) {
        return response([
            'status' => false,
            'message'   => __('messages.validation_errors'),
            'errors' => $validator->errors()->all()
        ], 200);
    }
  

но он говорит, что невозможно добавить или обновить дочернюю строку, но нет ничего об этой ошибке, когда я удаляю array_merge и удаляю объект json в простой объект, он работает нормально, я не знаю, в чем проблема, я застрял в этой проблеме.

Здесь нужна ваша помощь

                  array:3 [
          "user_profile" => array:22 [
         "email" => "shahzadshahg@hotmail.com"
        "password" => "admin123"
"password_confirmation" => "admin123"
"status" => 0
"first_name" => "Shahzad"
"middle_name" => "Hussain"
"last_name" => "Shah"
"date_of_birth" => "2015-01-01"
"gender" => "M"
"area_id" => 1
"address" => "Minhatten NY"
"city" => "New York"
"state" => "Washington"
"zip" => "12312"
"fax" => "111-111-1111"
"phone_extension" => "2471"
"work_phone" => "111-111-1111"
"phone_no" => "111-111-1111"
"emergency_contact" => "111-111-1111"
"social_security" => "111-11-1111"
"module_id" => 2
"role_id" => 2
    ]
   "prev" => array:6 [
"speciality_id" => 1
"facility_id" => 1
"priv_title" => "can edit doctor"
"priv_key" => "ced"
"display_group" => "Doctor"
"prev_id" => 1
  ]
   "token" => "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3RcL2ZlYXR1cmUtbWFzdGVyXC9hcGlcL2ZkX2xvZ2luIiwiaWF0IjoxNTU0MDMzNTI4LCJleHAiOjE1ODU1Njk1MjgsIm5iZiI6MTU1NDAzMzUyOCwianRpIjoiaXQyZm1KdmpmeWNOMXJwbyIsInN1YiI6MiwicHJ2IjoiNGFjMDVjMGY4YWMwOGYzNjRjYjRkMDNmYjhlMWY2MzFmZWMzMjJlOCIsImFjY2Vzc19tb2R1bGUiOiJmcm9udC1kZXNrIiwibW9kdWxlX2lkIjoyLCJ1c2VyX2lkIjoyfQ.nJXJapamtghGZZ_LZZlZLTE64Bs_ckQoWKanXNMD4Nc"
  

]

 public function register(Request $request) {


    $body = $request->all();

    $userProfile = $body['user_profile'];
    $userPrev = $body['prev'];

    $bodyObj = array_merge($userProfile, $userPrev);
    $bodyObj['token'] = $body['token'];




    return response()->json($bodyObj);


    DB::beginTransaction();

    try{

        $token = JWTAuth::getToken();
        $apy = JWTAuth::getPayload($token)->toArray();
        $request->merge(['module_id' => $apy['module_id']]);
        $request->request->add(['created_by' => Auth::user()->id]);
        $request->merge(['password' =>  bcrypt($request->input('password'))]);
        $user = $this->user->create($request->only($this->user->getModel()->fillable));
        $request->request->add(['user_id' => $user->id]);
        $this->userBasicInfo->create($request->only($this->userBasicInfo->getModel()->fillable));
        $this->userContactDetails->create($request->only($this->userContactDetails->getModel()->fillable));
        $this->userAccessModule->create($request->only($this->userAccessModule->getModel()->fillable));
        $this->userRoles->create($request->only($this->userRoles->getModel()->fillable));
        $this->verifyUser->create(['user_id' => $user->id, 'token' => str_random(40)]);

        Mail::to($user->email)->send(new VerifyMail($user));

        DB::commit();

        return response([
            'status' => true,
            'message' => 'User registered successfully',
        ], 200);

    } catch(Exception $ex) {
        DB::rollback();
        return response([
            'status' => false,
            'message' => __('messages.validation_errors'),
            'errors' => $ex->getMessage(),
        ], 500);
    }
}
  

Ответ №1:

 public function register(Request $request) {
    $body = $request->all();
    $userProfile = $body['user_profile'];
    $userPrev = $body['prev'];
    $bodyObj = array_merge($userProfile, $userPrev);
    $bodyObj['token'] = $body['token'];
    return response()->json($bodyObj);
    // $validator = UserValidations::validateUser($bodyObj);
    // if ($validator->fails()) {
    //     return response([
    //         'status' => false,
    //         'message'   => __('messages.validation_errors'),
    //         'errors' => $validator->errors()->all()
    //     ], 200);
    // }
}
  

array_merge Функция работает нормально
Ваш код (я прокомментировал несколько строк)

Ответ Postman

Комментарии:

1. Комментарии не предназначены для расширенного обсуждения или сеансов отладки. Если вы хотите уточнить свой вопрос или ответ, пожалуйста, отредактируйте. Если у вас есть дополнительный вопрос, пожалуйста, задайте новый вопрос.