Php 跨两个字段的唯一验证
我正在Laravel5中建立一个网站,用户可以通过选择名字和姓氏来创建一个角色 我已经围绕这一点建立了一些验证规则,但在实现唯一验证方面有点困难,因为我需要它来验证他们的全名,这在我的数据库中有两列。例如,用户可以创建一个名为“Jon Snow”的角色,但验证需要检查这两个字段的组合是否唯一,因为其他人可能想要创建角色“Jon Doe” 我现在意识到,当我写这篇文章的时候,我可以将两个专栏合并成一个,然后进行验证 但在我走这条路线之前,有没有办法像我需要的那样跨两个字段运行验证 以下是我的验证:Php 跨两个字段的唯一验证,php,validation,laravel,laravel-5,Php,Validation,Laravel,Laravel 5,我正在Laravel5中建立一个网站,用户可以通过选择名字和姓氏来创建一个角色 我已经围绕这一点建立了一些验证规则,但在实现唯一验证方面有点困难,因为我需要它来验证他们的全名,这在我的数据库中有两列。例如,用户可以创建一个名为“Jon Snow”的角色,但验证需要检查这两个字段的组合是否唯一,因为其他人可能想要创建角色“Jon Doe” 我现在意识到,当我写这篇文章的时候,我可以将两个专栏合并成一个,然后进行验证 但在我走这条路线之前,有没有办法像我需要的那样跨两个字段运行验证 以下是我的验证:
public function store(Request $request)
{
$character = new Characters;
$validator = Validator::make($request->all(), [
'firstname' => 'required|between:2,15',
'lastname' => 'required|between:2,15',
], [
'firstname.required' => 'You need to provide a first name!',
'lastname.required' => 'You need to provide a last name!',
'firstname.between' => 'The first name must be between :min - :max characters long.',
'lastname.between' => 'The last name must be between :min - :max characters long.',
]);
看看这个包裹。它包含Laravel的
validateUnique
规则的变体,允许验证多列唯一索引。只是一个想法,在验证之后
$firstName = Input::get('firstname');
$lastName = Input::get('lastname');
$whereStatement = ['firstname' => $firstName, 'lastname' => $lastname];
现在使用查询
$user = DB::table('yourtablename')->where($whereStatement)->count()
if ($user > 1){
//then redirect back user saying the name must be uniqe
}
else{
//save data to database
}
你是说你想让你的
firstname
和lastname
的组合在你的数据库中独一无二?是的,这正是我想要做的。