Maison > cadre php > Laravel > laravel中firstOrNew, firstOrCreate, firstOr et updateOrCreate par défaut

laravel中firstOrNew, firstOrCreate, firstOr et updateOrCreate par défaut

藏色散人
Libérer: 2020-05-16 11:54:05
avant
6181 Les gens l'ont consulté

La colonne tutorielle d'introduction suivante développée par Laravel vous présentera les méthodes firstOrNew, firstOrCreate, firstOr et updateOrCreate dans laravel. J'espère qu'elle sera utile aux amis dans le besoin !

laravel中firstOrNew, firstOrCreate, firstOr et updateOrCreate par défautSi vous avez déjà utilisé Laravel, vous connaissez probablement les méthodes standard pour créer des modèles Eloquent, telles que make(), create(), update et save(). Laravel propose également d'autres méthodes dont les gens ne réalisent pas qu'elles sont également très utiles pour créer et mettre à jour des modèles. Par conséquent, dans cet article, je souhaite présenter d'autres méthodes et montrer qu'elles peuvent être utiles :

firstOrNew

la méthode firstOrNew trouve le premier qui satisfait certaines contraintes. Modèle , new crée un nouveau modèle lorsqu'aucune donnée ne satisfait aux contraintes.

Vous pouvez prendre le code suivant :

$user = User::where('email', request('email'))->first();
if ($user === null) {
    $user = new User(['email' => request('email')]);
}
$user->name = request('name');
$user->save()
Copier après la connexion

et le réécrire comme :

$user = User::firstOrNew(['email' =>  request('email')]);
$user->name = request('name');
$user->save()
Copier après la connexion

Si vous ne trouvez pas un modèle existant, vous pouvez également le passer par le second paramètre Un tableau de propriétés supplémentaires :

$user = User::firstOrNew(
    ['email' =>  request('email')],
    ['name' => request('name')]
);
$user->save();
Copier après la connexion

firstOrCreate

La méthode firstOrCreate est très similaire à la méthode firstOrNew. Il essaiera de trouver un modèle correspondant en fonction du premier paramètre que vous transmettez. S'il n'est pas trouvé, il créera et enregistrera automatiquement un nouveau modèle en utilisant la valeur transmise dans le deuxième paramètre :

$user = User::firstOrCreate(
    ['email' =>  request('email')],
    ['name' => request('name')]
);
// No call to $user->save() needed
Copier après la connexion

. firstOr

J'ai récemment découvert la méthode firstOr lorsque je pêchais. La méthode firstOr récupérera le premier élément de données si aucune donnée correspondante n'est trouvée, le rappel entrant sera exécuté. Ceci est utile si vous devez effectuer des étapes supplémentaires lors de la création d'un utilisateur, ou si vous souhaitez faire autre chose que créer un nouvel utilisateur :

$user = User::where('email', request('email'))->firstOr(function () {
    $account = Account::create([ //... ]);
    return User::create([
        'account_id' => $account->id,
        'email' => request('email'), 
    ]);
});
Copier après la connexion

updateOrCreate

La méthode updateOrCreate tente de trouver un modèle qui correspond aux contraintes transmises dans le premier argument. Si un modèle correspondant est trouvé, il mettra à jour le modèle avec les propriétés transmises dans le deuxième argument. Si aucun modèle correspondant n'est trouvé, un nouveau modèle sera créé, en transmettant les premier et deuxième paramètres.

Vous pouvez refactoriser ce code :

$user = User::where('email', request('email'))->first();
if ($user !== null) {
    $user->update(['name' => request('name')]);
} else {
    $user = User::create([
      'email' => request('email'),
      'name' => request('name'),
    ]);
}
// Do other things with the User
Copier après la connexion

Utiliser la méthode updateOrCreate :

$user = User::updateOrCreate(
    ['email' =>  request('email')],
    ['name' => request('name')]
);
// Do other things with the User
Copier après la connexion

Conclusion

En résumé, je pense que ces méthodes peut vous aider à simplifier votre code dans certains cas ! Connaissez-vous d’autres conseils utiles et peu connus ? Si oui, n’hésitez pas à me le faire savoir. J'adore découvrir les petits détails qui rendent Laravel si génial.

Pour plus d'articles techniques sur le framework Laravel, veuillez visiter le tutoriel

laravel !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal