繁体   English   中英

使用laravel调用数组上的成员函数save()

[英]Call to a member function save() on array - using laravel

我正在尝试更新我的用户信息,我已经使json的对象当前我的json有用户配置文件的对象,我想使用json对象保存我的信息我还有我的控制器代码,我用$ userProfile替换了$ request。

{
"user_profile": {

    "email": "shahzadshahg@hotmail.com",
    "password": "admin123",
    "password_confirmation": "admin123",
    "status": 0,
    "first_name": "Shahzad",
    "middle_name": "ali123",
    "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,
    "id": 1
    }
    }

我正在更新记录的控制器:

public function update(Request $request) {

    $body = $request->all();

    $userProfile = $body['user_profile'];
    $bodyObj = $userProfile;

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

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

    DB::beginTransaction();

    try{
        $user = $this->user->find($userProfile['id']);
        $user->fill($userProfile->all())->save();

        $userProfile->request->add(['user_id' => $user->id]);
        //Update User Basic Info
        $userBasicInfoId = $this->userBasicInfo->where('user_id', $userProfile->input('id'))->value('id');
        if($userBasicInfoId) {
            $userBasicInfo = $this->userBasicInfo->find($userBasicInfoId);
            $userBasicInfo->fill($userProfile->all())->save();
        } else {
            $userBasicInfo = $this->userBasicInfo->create($userProfile->only($this->userBasicInfo->getModel()->fillable));
        }

        //Update User Contact Details
        $userContactDetailId = $this->userContactDetails->where('user_id', $userProfile->input('id'))->value('id');
        if($userContactDetailId) {
            $userContactDetails = $this->userContactDetails->find($userContactDetailId);
            $userContactDetails->fill($userProfile->all())->save();
        } else {
            $userContactDetails = $this->userContactDetails->create($userProfile->only($this->userContactDetails->getModel()->fillable));
        }


        //Update User Module
        $module_id = $this->userAccessModule->where('user_id', $userProfile->input('id'))->value('id');
        if($module_id) {
            $userModule = $this->userAccessModule->find($module_id);
            $userModule->fill($userProfile->all())->save();
        } else {
            $userModule = $this->userAccessModule->create($userProfile->only($this->userAccessModule->getModel()->fillable));
        }

        //Update User Roles
        $user_role_id = $this->userRoles->where('user_id', $userProfile->input('id'))->value('id');
        if($user_role_id) {
            $userRole = $this->userRoles->find($user_role_id);
            $userRole->fill($userProfile->all())->save();
        } else {
            $userRole = $this->userRoles->create($userProfile->only($this->userRoles->getModel()->fillable));
        }


        //Getting the update User infor
        $user = $this->user->with('userBasicInfo', 'userContactInfo','userAccessModule', 'userRole:id,user_id,role_id')->where('id', $request->input('id'))->first();

        DB::commit();

        return response(['status' => true, 'message' => 'User updated successfully', 'data' => $user], 200);

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

我用$ userProfile替换了$ request但是我得到了一个错误,我可以使用json对象更新我的记录。 我们将非常感谢您的帮助!

你好,你可以试试这个:

$json = file_get_contents(storage_path('user_profile.json'));
$users_profile = json_decode($json,true);
foreach ($users_profile as $user_profile)  {
        foreach ($$user_profile as $key => $value) {
            $insertArr[str_slug($key,'_')] = $value;
            $userBasicInfo->fill($user_profile->all())->save();
        }

将此添加到您的代码中

>如果我有任何错误,请编辑它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM