我正在Laravel 5中建立一个网站,用户可以通过选择名字和姓氏来创建一个角色。
我已经围绕这个建立了一些验证规则,但是在实现唯一验证时有点难倒,因为我需要它来验证他们的全名,这是在我的数据库中的两列。例如,用户可以创建一个名为"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.',
]);
看一下这个felixkiss/uniquewith-validator包。它包含了Laravel的validateUnique
规则的变体,允许对多列UNIQUE索引进行验证。
只是一个想法,验证后,
$firstName = Input::get('firstname');
$lastName = Input::get('lastname');
$whereStatement = ['firstname' => $firstName, 'lastname' => $lastname];
现在使用query
$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
}