web-dev-qa-db-fra.com

Laravel vérifiant si un disque existe

Je suis nouveau à Laravel. Veuillez excuser la question du débutant, mais comment puis-je savoir si un enregistrement existe?

<?php

$user = User::where('email', '=', Input::get('email'));

Que puis-je faire ici pour voir si $user a un enregistrement?

180
Ben

Cela dépend si vous voulez travailler avec l'utilisateur par la suite ou seulement vérifier s'il en existe un.

Si vous souhaitez utiliser l'objet utilisateur s'il existe:

$user = User::where('email', '=', Input::get('email'))->first();
if ($user === null) {
   // user doesn't exist
}

Et si vous voulez seulement vérifier

if (User::where('email', '=', Input::get('email'))->count() > 0) {
   // user found
}

Ou même mieux

if (User::where('email', '=', Input::get('email'))->exists()) {
   // user found
}
399
lukasgeiter

Une des meilleures solutions consiste à utiliser la méthode firstOrNew ou firstOrCreate. La documentation a plus de détails sur les deux.

17
tapos ghosh
if($user->isEmpty()){
    // has no records
}

Eloquent utilise des collections. Voir le lien suivant: https://laravel.com/docs/5.4/eloquent-collections

6
Nabil
if (User::where('email', Input::get('email'))->exists()) {
    // exists
}
4
lucidlogic

Laravel 5.6.26v 

trouver l'enregistrement existant par la clé primaire (email ou id) 

    $user = DB::table('users')->where('email',$email)->first();

puis 

      if(!$user){
             //user is not found 
      }
      if($user){
             // user found 
      }

include "use DB" et le nom de la table utilisateur deviennent pluriels à l'aide de la requête ci-dessus comme utilisateur à utilisateurs

1
Nadeem Qasmi
if (User::where('email', '[email protected]')->first())
    // It exists
else
    // It does not exist

Utilisez first(), pas count() si vous ne devez vérifier que l'existence.

first() est plus rapide car il recherche une seule correspondance alors que count() compte toutes les correspondances.

1
doncadavona
if ($u = User::where('email', '=', $value)->first())
{
   // do something with $u
   return 'exists';
} else {
  return 'nope';
}

travaillerait avec try/catch 

-> get () retournerait toujours un tableau vide

1
Julian

Créé ci-dessous méthode (pour moi-même) pour vérifier si l'ID d'enregistrement donné existe sur la table Db ou non.

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);

Accueil Ça aide!

0
rcadhikari

Je pense que ci-dessous est le moyen le plus simple de réaliser la même chose:

    $user = User::where('email', '=', $request->input('email'))->first();
    if ($user) {
       // user doesn't exist!
    }
0
ShuBham GuPta

voici un lien vers quelque chose que je pense pouvoir aider https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/

0
GiftedX

Dans laravel éloquent, a sa méthode existe () par défaut, reportez-vous à l'exemple suivant.

if(User::where('id', $user_id )->exists()){ // your code... }

0
dhanushka udayanga
$user = User::where('email', '=', Input::get('email'))->first();
if ($user === null) {
   // user doesn't exist
}

peut être écrit comme 

if (User::where('email', '=', Input::get('email'))->first() === null) {
   // user doesn't exist
}

Cela renverra true ou false sans attribuer une variable temporaire si c'est tout ce que vous utilisez pour $ user dans l'instruction d'origine.

0
Chawker21

vous pouvez utiliser la validation laravel.

Mais ce code est aussi bon:

$user = User::where('email',  $request->input('email'))->count();

if($user > 0)
{
   echo "There is data";
}
else
   echo "No data";
0
hamidteimouri

C'est simple de savoir s'il y a des enregistrements ou non 

$user = User::where('email', '=', Input::get('email'))->get();
if(count($user) > 0)
{
echo "There is data";
}
else
echo "No data";
0
sunshine

Ceci vérifiera si une adresse email particulière existe dans la table:

if (isset(User::where('email', Input::get('email'))->value('email')))
{
    // Input::get('email') exist in the table 
}
0
Syed Muzammil Ali
$email = User::find($request->email);
If($email->count()>0)
<h1>Email exist, please make new email address</h1>
endif
0
Mohammad Usman

Très simple  

     if (User::where('email', $request->input('email')->first())
       {
            // User exists
       } else{
            // User does not exist
       }

obtenir le mot de passe du même utilisateur que 

$user = User::where('email', '=', $email)->first();
$user->password
dd($user);

Merci

0
Tlzdeveloper786

Ceci vérifiera si les emails demandés existent dans la table des utilisateurs:

if (User::where('email', $request->email)->exists()) {
   //email exists in user table
}
0
A. Zaman

La vérification de l'instruction null dans if empêche Laravel de renvoyer 404 immédiatement après la fin de la requête.

if ( User::find( $userId ) === null ) {

    return "user does not exist";
}
else {
    $user = User::find( $userId );

    return $user;
}

On dirait qu'il lance une double requête si l'utilisateur est trouvé, mais je n'arrive pas à trouver une autre solution fiable.

0
Arthur Tarasov
$user = User::where('email', request('email')->first();
return (count($user) > 0 ? 'Email Exist' : 'Email Not Exist');
0
Mathesh Raj

Dans votre contrôleur  

$this->validate($request, [
        'email' => 'required|unique:user|email',
    ]); 

Dans votre affichage - Afficher le message déjà existant  

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
0
Karthik