首页 > 解决方案 > 当您替换数据库中的值时,不会发生保存并给出错误?

问题描述

控制器

 public function update(Request $request)
    {
        $user= User::find($request->id);
        $user_role= User_roles::find($request->user_id);
        $user->name = $request->name;
        $user->surname = $request->surname;
        $user->patronymic = $request->patronymic;
        $user->number = $request->number;
        $user->password = $request->password;
        $user->iin = $request->iin;
        $user->groupinvalid = $request->groupinvalid;
        $user->rank = $request->rank;
        $user->save();

        if($request->rank =='admin')
        {
            $user_role = $request->role_id=1;
        }else if ($request->rank =='oper')
        {
            $user_role = $request->role_id=3;
        }else if ($request->rank =='user')
        {
            $user_role=$request->role_id=2;
        };
        $user_role->save();
        return redirect('users');

    }

需要当管理员在 ( $user->rank = $request->rank;) 中更改为之后开始测试时,如果他指出什么意义(管理员、用户、操作员)被记录在表中的变化user_role取决于role_id书面排名。Yaeto 已经完成但是当你保存时

(在整数上调用成员函数 save())

模型(User_role.php)

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User_roles extends Model
{
    public $timestamps = false;

    protected $table = 'user_role';

    public function roles()
    {
        return $this->hasOne('App\Models\Role','id','role_id');
    }
}

标签: phplaravel

解决方案


这是代码:

     if($request->rank =='admin')
        {
            $user_role->role_id = 1;
        }else if($request->rank =='oper')
        {
            $user_role->role_id = 3;
        }else if ($request->rank =='user')
        {
            $user_role->role_id = 2;
        };
     $user_role->save();

推荐阅读