【发布时间】:2021-07-31 01:24:14
【问题描述】:
我在我的项目中使用 Laravel 8,在这个项目中,我想在 users 和 roles 表之间应用 OneToMany 关系。
所以在模型中,我添加了这些:
Role.php:
public function users()
{
return $this->hasMany(Role::class);
}
User.php:
public function role()
{
return $this->belongsTo(User::class);
}
然后为了创建新用户,我添加了这个表单域:
<div class="form-group">
<label class="col-sm-2 control-label">Role</label>
<select class="form-control" name="role" dir="ltr">
@foreach(\App\Models\Role::all() as $role)
<option value="{{ $role->id }}">{{ $role->name }}</option>
@endforeach
</select>
</div>
在 Store 方法中,我编写了这样的代码:
public function store(Request $request)
{
$validate_data = Validator::make(request()->all(),[
'name' => 'required|min:4',
'email' => 'required|email|unique:users',
'status' => 'required',
'role' => 'required',
'password' => 'required|min:6'
])->validated();
$creation = User::create([
'name' => $validate_data['name'],
'email' => $validate_data['email'],
'status' => $validate_data['status'],
'role_id' => $validate_data['role'],
'password' => bcrypt($validate_data['password'])
]);
if($creation){
return redirect()->back();
}else{
return '1003';
}
}
但现在的问题是,每当我尝试添加新用户时,它都会成功添加到表users,但列role_id 将保持为空:
当我说 dd($request); 时,它会打印:
如您所见,它存储了role,但我不知道为什么它没有将其保存在数据库中!
那么这里出了什么问题?我该如何解决这个问题?
非常感谢你们的任何想法或建议......
提前致谢。
【问题讨论】: