laravel - 验证 Laravel 中的唯一名称和名字
问题描述
我知道该主题存在,但到目前为止我还没有找到解决方案。我有一个players
用两个字段命名的表:name,
firstname.
我的目标是在输入多个条目时都不重复。
我想得到这个结果。
Fostier | Alain
Fostier | Jeremy
如果我有两次福斯蒂尔| 阿兰这是不正确的。
重复系统应该只结合ID?我尝试了以下但没有成功。
public function store(Request $request)
{
$request->validate([
'name' => 'required|unique:players,name',
'firstname' => 'required|unique:players,firstname',
]);
Player::create($request->all());
flashy('Valider');
return redirect()->route('players.index')
->with('success', 'save');
}
解决方案
您可以使用Illuminate\Validation\Rule
该类进行复合检查,例如:
use Illuminate\Validation\Rule;
...
$request->validate([
'name' => ['required', Rule::unique('players', 'name')->where(function ($query) use ($request) {
return $query->where('name','!=', $request->input('firstname'));
})],
'firstname' => ['required', Rule::unique('players', 'firstname')->where(function ($query) use ($request) {
return $query->where('firstname', '!=', $request->input('name'));
})],
]);
这通过检查“名字”是否正在使用来检查“名字”的唯一性,并且对于“名字”也用它来检查“名字”。
推荐阅读
- docker - Elasticsearch application with docker compose runnable on multi-node swarm
- angular - try_files 未修复 EC2 容器中的 404
- python - 使用 ansible 检查 python
- reactjs - 反应打字稿与多个接口一起工作
- sql - 在 postgres/redshift 中对百分比计算进行分组
- mysql - 运行 SQL 查询时更改表的值
- django - 鹡鸰表单文件上传
- html - Angular 材质“mat-slide-toggle”覆盖
- javascript - 透明选项在具有 nodeIntegration 的电子中不起作用
- mysql - Mysql 复制 - 一主两从