【发布时间】:2021-07-07 16:15:34
【问题描述】:
我想使用 Laravel Unique 验证器来实现 softdeletes。我已经尝试了很多次,但它会产生这样的错误。我该怎么办?提前致谢。这是我的代码示例。
public function store(Request $request)
{
$request->validate([
'nama' => 'required',
'nim' => [
'required',
'size:10',
Rule::unique('students')->where(function ($query) {
return $query->where('deleted_at', NULL);
})
],
'email' => 'required|email',
]);
Student::create([
'major_id' => $request->major_id,
'nama' => $request->nama,
'slug' => Str::of($request->nama)->slug('-'),
'nim' => $request->nim,
'email' => $request->email,
]);
return redirect('/students')->with('status', 'Success');
}
【问题讨论】:
-
如果你想在你的表中使用唯一字段,你有两种变体:从表中完全删除数据,或者用新值更新需要的行并将
deleted_at设置为NULL -
我试图像这样wisdmlabs.com/blog/laravel-soft-delete-unique-validations 解决我的问题,但它对我不起作用,而不是产生这样的错误。 SQLSTATE[23000]:完整性约束违规:1062 键“students_nim_unique”的重复条目“18.N1.0014”(SQL:插入
students(major_id,nama,slug,nim,@ 987654333@,updated_at,created_at) 值 (1, Geovana Clarissa Mulyono, geovana-clarissa-mulyono, 18.N1.0014, geovanaclarissamulyono@gmail.com, 2021-04-13 04:06:19, 2021- 04-13 04:06:19))
标签: php laravel validation