如何在邮递员中分​​解身体要求-使用Laravel

时间:2019-03-31 12:08:49

标签: arrays json laravel

我正在尝试将邮递员的身体要求从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对象删除到简单对象中时,此错误没有任何作用,它可以正常工作,我不知道这个问题在哪里卡住了。 / p>

您的帮助需要在这里

                 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 个答案:

答案 0 :(得分: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功能正常 Your code (i have commented some lines)

Postman response