Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何仅更新Laravel中的3列值?_Php_Laravel - Fatal编程技术网

Php 如何仅更新Laravel中的3列值?

Php 如何仅更新Laravel中的3列值?,php,laravel,Php,Laravel,我有一个页面模型。它在数据库表中有以下列: 身份证 名字 电子邮件 密码 地位 特权 usr_prf_颜色 usr_prf_导航 usr_prf_滚动条 我只想更新3列值,它们是usr_prf_color、usr_prf_nav和usr_prf_scroll 这是我的控制器代码: public function themeUpdate(UpdateThemeRequest $request , User $user) { $user->update($request-&

我有一个页面模型。它在数据库表中有以下列:

  • 身份证
  • 名字
  • 电子邮件
  • 密码
  • 地位
  • 特权
  • usr_prf_颜色
  • usr_prf_导航
  • usr_prf_滚动条
我只想更新3列值,它们是usr_prf_color、usr_prf_nav和usr_prf_scroll

这是我的控制器代码:

  public function themeUpdate(UpdateThemeRequest $request , User $user)
{
      $user->update($request->all());
      
      $request->usr_prf_color;
      $request->usr_prf_nav;
      $request->usr_prf_scroll;

      $this->validate($request, [

        'usr_prf_color' =>['required'],
        'usr_prf_nav' => ['required'],
        'usr_prf_scroll' => ['required'],

      ]);

    $validatedData = $request->validated();

    $data = $request-> only(['usr_prf_color','usr_prf_nav','usr_prf_scroll']);
 
    $user->update($data);

    $theme = DB::table('users')
                ->select('usr_prf_color','usr_prf_nav','usr_prf_scroll')
                ->where('id', $user->id)
                ->get();

               
    return view('profile.index',compact('theme'));

}
以下是我的视图代码:

<form action="{{ route('profile.themeUpdate', auth()->user()->id) }}" method="POST">
                                        @csrf 
                                        @method('PUT')
                                    <div class="row">
                                        <div class="col-md-6">
                                            <div class="form-group">
                                                <label>Color</label>
                                                <select name="usr_prf_color" class="form-control">
                                                    <option value="light">Light</option>
                                                    <option value="dark">Dark</option>
                                                </select>
                                            </div>

                                            <div class="form-group">
                                                <label>Navigation</label>
                                                <select name="usr_prf_nav" class="form-control">
                                                    <option value="horizontal">Horizontal</option>
                                                    <option value="vertical">Vertical</option>
                                                    <option value="hidden">Hidden</option>
                                                </select>
                                            </div>

                                            <div class="form-group">
                                                <label>Scroll</label>
                                                <select name="usr_prf_scroll" class="form-control">
                                                    <option value="scrollable">Scrollable</option>
                                                    <option value="non-scrollable">Non-Scrollable</option>
                                                </select>
                                            </div>

                                        </div>
                                    </div>
                                    <button type='submit' class="btn btn-primary">Update</button>
                                </form>
这是我的模型:

class User extends Authenticatable
{ 使用应呈报文件

protected $table = 'users';

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'status', 'privilege' ,'password', 'usr_prf_color', 'usr_prf_nav', 'usr_prf_scroll',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

/**
 * The attributes that should be cast to native types.
 *
 * @var array
 */
protected $casts = [
    'email_verified_at' => 'datetime',
];
}


当我运行这个编码时并没有错误,但数据并没有存储到数据库中。谁能帮我解决这个问题。高级版谢谢。

在您的视图中,在隐藏的输入中添加id, 在控制器中添加

User::where('id', $request->input('id'))->update($data);

选中用户中的
$filleble
属性。它应该是一个数组,包含可以批量分配的字段(即通过
update()
方法)。@Daniel是正确的,可能您没有将列添加到$fillable-in模型中
User::where('id', $request->input('id'))->update($data);
Try following code:It should work.
$validator = \Validator::make($request->all(),[
    'usr_prf_color' =>'required',
    'usr_prf_nav' => 'required',
    'usr_prf_scroll' => 'required'
]);

if ($validator->fails()) {
  return redirect('profile.index')
           ->withErrors($validator)
           ->withInput();
}
 
$user = User::where('id', $request->input('id');
$user->update($request->only(['usr_prf_color','usr_prf_nav','usr_prf_scroll']));

$theme = $user->refresh();
           
return view('profile.index',compact('theme'));