php - saber - validar si un registro existe en la base de datos laravel
Comprobación de Laravel si existe un registro (22)
Soy nuevo en Laravel. Disculpe la pregunta de novato, pero ¿cómo puedo encontrar si existe un registro?
$user = User::where(''email'', ''='', Input::get(''email''));
¿Qué puedo hacer aquí para ver si
$user
tiene un registro?
Aquí hay un enlace a algo que creo que puede ayudar https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/
Creado debajo del método (para mí) para verificar si la identificación de registro dada existe en la tabla Db o no.
private function isModelRecordExist($model, $recordId)
{
if (!$recordId) return false;
$count = $model->where([''id'' => $recordId])->count();
return $count ? true : false;
}
// To Test
$recordId = 5;
$status = $this->isModelRecordExist( (new MyTestModel()), $recordId);
Inicio ¡Ayuda!
Creo que a continuación es la forma más sencilla de lograr lo mismo:
$user = User::where(''email'', ''='', $request->input(''email''))->first();
if ($user) {
// user doesn''t exist!
}
Depende si luego desea trabajar con el usuario o solo verificar si existe.
Si desea utilizar el objeto de usuario si existe:
$user = User::where(''email'', ''='', Input::get(''email''))->first();
if ($user === null) {
// user doesn''t exist
}
Y si solo quieres comprobar
if (User::where(''email'', ''='', Input::get(''email''))->count() > 0) {
// user found
}
O incluso mejor
if (User::where(''email'', ''='', Input::get(''email''))->exists()) {
// user found
}
En laravel elocuente, tiene el método predeterminado existe (), consulte el siguiente ejemplo.
if(User::where(''id'', $user_id )->exists()){ // your code... }
Es fácil saber si hay registros o no
$user = User::where(''email'', ''='', Input::get(''email''))->get();
if(count($user) > 0)
{
echo "There is data";
}
else
echo "No data";
Esto verificará si el correo electrónico solicitado existe en la tabla de usuario:
if (User::where(''email'', $request->email)->exists()) {
//email exists in user table
}
Esto verificará si existe una dirección de correo electrónico particular en la tabla:
if (isset(User::where(''email'', Input::get(''email''))->value(''email'')))
{
// Input::get(''email'') exist in the table
}
La comprobación de
null
dentro de la instrucción
if
evita que Laravel regrese 404 inmediatamente después de que finalice la consulta.
if ( User::find( $userId ) === null ) {
return "user does not exist";
}
else {
$user = User::find( $userId );
return $user;
}
Parece que ejecuta una doble consulta si se encuentra al usuario, pero parece que no puedo encontrar ninguna otra solución confiable.
Laravel 5.6.26v
para encontrar el registro existente a través de la clave principal (correo electrónico o id)
if(!$user){
//user is not found
}
if($user){
// user found
}
entonces
if (User::where(''email'', ''user@email.com'')->first())
// It exists
else
// It does not exist
incluya "use DB" y el usuario de nombre de tabla se convierte en plural usando la consulta anterior como usuario a usuario
Opciones de trabajo más cortas:
// if you need to do something with the user
if ($user = User::whereEmail(Input::get(''email''))->first()) {
// ...
}
// otherwise
$userExists = User::whereEmail(Input::get(''email''))->exists();
Una de las mejores soluciones es usar el método
firstOrNew
o
firstOrCreate
.
La
documentation
tiene más detalles sobre ambos.
puedes usar la validación laravel.
Pero este código también es bueno:
$user = User::where(''email'', $request->input(''email''))->count();
if($user > 0)
{
echo "There is data";
}
else
echo "No data";
En su controlador
$this->validate($request, [
''email'' => ''required|unique:user|email'',
]);
En su vista - Mostrar mensaje ya existente
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
este es un código simple para verificar si el correo electrónico existe o no en la base de datos
$data = $request->all(); $user = DB::table(''User'')->pluck(''email'')->toArray(); if(in_array($user,$data[''email''])) { echo ''existed email''; }
if ($u = User::where(''email'', ''='', $value)->first())
{
// do something with $u
return ''exists'';
} else {
return ''nope'';
}
funcionaría con try / catch
-> get () aún devolvería una matriz vacía
if (User::where(''email'', Input::get(''email''))->exists()) {
// exists
}
if($user->isEmpty()){
// has no records
}
Eloquent utiliza colecciones. Vea el siguiente enlace: https://laravel.com/docs/5.4/eloquent-collections
$user = DB::table(''users'')->where(''email'',$email)->first();
Use
first()
, no
count()
si solo necesita verificar la existencia.
first()
es
más rápido
porque busca una sola coincidencia, mientras que
count()
cuenta todas las coincidencias.
$email = User::find($request->email);
If($email->count()>0)
<h1>Email exist, please make new email address</h1>
endif
$user = User::where(''email'', ''='', Input::get(''email''))->first();
if ($user === null) {
// user doesn''t exist
}
Se puede escribir como
if (User::where(''email'', ''='', Input::get(''email''))->first() === null) {
// user doesn''t exist
}
Esto devolverá verdadero o falso sin asignar una variable temporal si eso es todo para lo que está utilizando $ user en la declaración original.
$user = User::where(''email'', request(''email'')->first();
return (count($user) > 0 ? ''Email Exist'' : ''Email Not Exist'');