我正在寻找避免Laravel中重复项的方法。例如,我有一个包含2个字段的表,分别为name
和firstname
。
如何在Controller上管理重复项?我是新手...
这是我的函数store()。
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:25',
'firstname' => 'required|string|max:25'
]);
$exists = Auteur::where('name', $request->get('name'))->where('firstName', $request->get('firstName'))->count();
if (!$exists){
Auteur::create($request->all());
return redirect()->route('auteurs.index')
->with('success', 'save');
}
}
感谢您的帮助和解释。
答案 0 :(得分:1)
如果它是一个字段,则可以使用验证,也可以使该字段唯一,并且只需一点点错误处理就可以解决该问题。但是,由于必须检查两个字段,因此最简单的方法是检查元素是否已存在于数据库中并从中进行重复数据删除。因此,在store()
方法中:
$exists = Auteur::where('name', $req->get('name'))->where('firstname', $req->get('firstname')->count();
if (!$exists){
// create the new model, now that we know there is no duplicate in the database
Auteur::create($request->all());
}
答案 1 :(得分:0)
只需在验证规则中添加唯一性即可。如果您想分别检查每个字段的唯一验证。
$request->validate([
'name' => 'required|unique:auteurs,name|string|max:25',
'firstname' => 'required|unique:auteurs,firstname|string|max:25'
]);
Here I hope the table name is `auteurs`