【发布时间】:2020-11-17 03:37:23
【问题描述】:
我有一个页面模型。它在数据库表中有以下列:
- 身份证
- 姓名
- 电子邮件
- 密码
- 状态
- 特权
- usr_prf_color
- usr_prf_nav
- usr_prf_scroll
我只想更新 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>
这是我的路线:
Route::put('profile-theme', 'UserProfileController@themeUpdate')->name('profile.themeUpdate');
这是我的模型:
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',
];
}
运行此编码时没有错误,但数据未存储到数据库中。谁能帮我解决这个问题。提前谢谢你。
【问题讨论】:
-
检查用户中的
$fillable属性。它应该是一个可以批量分配字段的数组(即通过update()方法)。 -
@Daniel 是正确的,也许您没有将列添加到模型中的 $fillable