验证Laravel中的唯一名称和名字

时间:2019-04-25 19:48:03

标签: laravel

我知道这个问题存在,但是到目前为止我还没有找到解决方案。我有一个名为+-----------------------------------------------------------------------------------------------------------------+ |value | +-----------------------------------------------------------------------------------------------------------------+ |{"ID":1,"ID-2":23,"fruits":{"no of banana":0,"no of apples":1},"vegetables":{"no of potatos":2,"no of onions":0}}| |{"ID":2,"ID-2":23,"fruits":{"no of banana":1,"no of apples":0},"vegetables":{"no of potatos":0,"no of onions":1}}| |{"ID":2,"ID-2":29,"fruits":{"no of banana":0,"no of apples":1},"vegetables":{"no of potatos":1,"no of onions":0}}| +-----------------------------------------------------------------------------------------------------------------+ 的表,其中有两个字段:players name,我的目标是在输入多个条目时不重复。

我想得到这个结果。

firstname.

如果我有两次 Fostier |阿兰,这是不正确的。

重复系统应该仅合并ID?我尝试了以下方法,但没有成功。

Fostier | Alain 
Fostier | Jeremy 

1 个答案:

答案 0 :(得分:3)

您可以使用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'));
    })],
]);

这还将通过检查“名称”是否在使用中来检查“名字”的唯一性,并且对“名称”也进行同样的检查“名字”。