Eh bien pour commencer, vous devez exécuter un findOrFail () ou similaire sur la requête $ user
Mark Baker
9
cela n'aide pas vraiment
Ben
1
Alors qu'est-ce que ça fait? Pourquoi ça n'aide pas? $user = User::where('email', '=', Input::get('email'));crée simplement une requête dans $user, vous devez exécuter cette requête. findOrFail()est une façon d'exécuter cette requête. get()serait une autre façon, firstOrFail()une autre
Mark Baker
2
Si une suggestion «n'aide pas vraiment», essayez de dire pourquoi elle n'aide pas vraiment, car de cette façon cela signifie que nous savons comment améliorer / changer cette suggestion
tout en ne correspondant pas à la question, encore, des fonctions très utiles. la différence entre les deux est que firstOrNew instancie une instance du modèle appelée tandis que firstOrCreate enregistre instantanément le modèle interrogé, vous devez donc mettre à jour les modifications sur le modèle firstOrCreate.
Gokigooooks
Oui, ou une autre façon de penser, utilisez firstOrCreate si vous pouvez passer tous les attributs en une seule fois (utilisez le deuxième paramètre), mais firstOrNew si vous avez besoin de plus de logique avant d'enregistrer.
Ouais mais ça ne rend pas une collection. Cela renvoie un seul objet de modèle, car vous supposeriez que chaque utilisateur a un objet unique, emailce ->isEmpty()qui générera une erreur.
user3574492
Et si j'obtiens l'erreur suivante:Call to a member function isEmpty() on null
Pathros
6
if(User::where('email','[email protected]')->first())// It existselse// It does not exist
Utilisez first(), pas count()si vous avez seulement besoin de vérifier l'existence.
first()est plus rapide car il recherche une seule correspondance alors qu'il count()compte toutes les correspondances.
if(!$user){//user is not found }if($user){// user found }
inclure "utiliser la base de données" et le nom de table utilisateur devient pluriel en utilisant la requête ci-dessus comme utilisateur aux utilisateurs
Laravel 6 ou en haut: écrivez le nom de la table, puis donnez la condition de clause where par exemple où ('id', $ request-> id)
publicfunction store(Request $request){
$target = DB:: table('categories')->where('title', $request->name)->get()->first();if($target ===null){// do what ever you need to do
$cat =newCategory();
$cat->title = $request->input('name');
$cat->parent_id = $request->input('parent_id');
$cat->user_id=auth()->user()->id;
$cat->save();return redirect(route('cats.app'))->with('success','App created successfully.');}else{// match found return redirect(route('cats.app'))->with('error','App already exists.');}}
// 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();
c'est un code simple pour vérifier que le courrier électronique existe ou non dans la base de données
$ data = $ request-> all ();
$ user = DB :: table ('User') -> pluck ('email') -> toArray ();
if (in_array ($ user, $ data ['email']))
{
echo 'existait un e-mail';
}
$user = User::where('email', '=', Input::get('email'));
crée simplement une requête dans$user
, vous devez exécuter cette requête.findOrFail()
est une façon d'exécuter cette requête.get()
serait une autre façon,firstOrFail()
une autreRéponses:
Cela dépend si vous souhaitez 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:
Et si vous voulez seulement vérifier
Ou encore mieux
la source
exists()
contre un record inexistant, cela donne une erreur:Call to a member function exists() on null
first()
L'une des meilleures solutions consiste à utiliser la méthode
firstOrNew
oufirstOrCreate
. La documentation contient plus de détails sur les deux.la source
la source
exists()
méthode.Eloquent utilise des collections. Voir le lien suivant: https://laravel.com/docs/5.4/eloquent-collections
la source
email
ce->isEmpty()
qui générera une erreur.Call to a member function isEmpty() on null
Utilisez
first()
, pascount()
si vous avez seulement besoin de vérifier l'existence.first()
est plus rapide car il recherche une seule correspondance alors qu'ilcount()
compte toutes les correspondances.la source
Dans laravel eloquent, la méthode par défaut existe (), voir l'exemple suivant.
if(User::where('id', $user_id )->exists()){ // your code... }
la source
Laravel 5.6.26v
trouver l'enregistrement existant via la clé primaire (email ou id)
puis
inclure "utiliser la base de données" et le nom de table utilisateur devient pluriel en utilisant la requête ci-dessus comme utilisateur aux utilisateurs
la source
Cela vérifiera si l'e-mail demandé existe dans la table des utilisateurs:
la source
Dans votre contrôleur
À votre avis - Afficher le message déjà existant
la source
required|unique:users,email|email
fonctionnerait avec try / catch
-> get () retournerait toujours un tableau vide
la source
la source
C'est simple de savoir s'il y a des enregistrements ou non
la source
la source
vous pouvez utiliser la validation laravel.
Mais ce code est également bon:
la source
Cela vérifiera si une adresse e-mail particulière existe dans le tableau:
la source
La vérification de l' instruction
null
withinif
empêche Laravel de renvoyer 404 immédiatement après la fin de la requête.Il semble qu'il exécute une double requête si l'utilisateur est trouvé, mais je n'arrive pas à trouver d'autre solution fiable.
la source
find
parwhere
.User::where(id, 1)->first()
peut être écrit comme
Cela retournera vrai ou faux sans affecter une variable temporaire si c'est tout ce que vous utilisez $ user pour dans l'instruction d'origine.
la source
Je pense que ci-dessous est le moyen le plus simple d'y parvenir:
la source
Créé ci-dessous la méthode (pour moi) pour vérifier si l'ID d'enregistrement donné existe sur la table Db ou non.
Accueil Ça aide!
la source
La façon la plus simple de le faire
la source
Laravel 6 ou en haut: écrivez le nom de la table, puis donnez la condition de clause where par exemple où ('id', $ request-> id)
la source
Pour vérifier efficacement si l'enregistrement existe, vous devez utiliser la méthode is_null pour vérifier la requête.
Le code ci-dessous pourrait être utile:
la source
Options de travail les plus courtes:
la source
voici un lien vers quelque chose que je pense peut aider https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/
la source
c'est un code simple pour vérifier que le courrier électronique existe ou non dans la base de données
la source