Laravel检查用户是否存在

问题描述:

我正在使用Laravel 5.2.45Laravel检查用户是否存在

我正尝试为我的应用程序创建新用户。 在创建用户之前,我需要检查是否有用户具有相同的姓名和生日。 我该怎么做laravel?

+0

由d查看数据库查询以查看这些值是否在数据库中。请参阅[查询构建器文档](https://laravel.com/docs/5.2/queries)。你的问题很基本,很可能会被封闭,因为你没有任何代码表明你已经试图自己做这件事。 –

+0

laravel提供了例如'unique'来检查数据库中是否存在一些数据。但我不想找一个条目。 3个条目必须匹配以提供错误。我知道我可以做一个数据库查询,并检查是否已经有一个现有的用户,但认为有更好的方法来做laravel – hatemjapo

用户使用相同的名字,姓氏和生日

$duplicate_user = \DB::table('users') 
    ->where('name', 'LIKE', $new_name) 
    ->where('surname', 'LIKE', $new_surname) 
    ->where('birthday', '=', $new_birthday) 
    ->first(); 

if($duplicate_user) { 
    return response('This user already exists', 422); 
} 

由于Laravel验证Docs

独特:表,列,除非,idColumn

Validator::extend('and_unique', function($attribute, $value, $parameters, $validator) { 
$result = DB::table($parameters[0])->where(function($query) use ($attribute, $value, $parameters) { 
    $query->where($attribute, '=', $value) // where name = value 
     ->orWhere($parameters[1]), '=', $value); // where surname = value 
     ->orWhere($parameters[2]), '=', $value); // where birthday = value 
})->first(); 

return $result ? false : true; 
}); 

'name' => 'required|and_unique:users,surname,birthday' 
+0

这是行不通的。如果其中一个名字,姓氏或生日被采取,这将给一个错误。 – hatemjapo

$siteUser = new SiteUser; 

foreach (['birth_date', 'first_name', 'last_name'] as $key) { 
$siteUser->$key = $request->$key; 
} 
+1

你可以在你的答案中添加一些细节吗?为什么OP应该使用这段代码? – Jer