Optimisation des opérations CRUD avec Laravel Eloquent
Lorsque vous travaillez avec une base de données dans Laravel, il est courant d'insérer ou de mettre à jour des enregistrements. Pour y parvenir, les développeurs ont souvent recours à des instructions conditionnelles qui vérifient si un enregistrement existe avant de décider d'effectuer une insertion ou une mise à jour.
La méthode firstOrNew()
Heureusement, Eloquent fournit une solution plus efficace grâce à la méthode firstOrNew(). Cette méthode vérifie l'existence d'un enregistrement en fonction de critères spécifiés et renvoie le premier enregistrement correspondant s'il est trouvé ; sinon, il crée une nouvelle instance du modèle.
Exemple d'utilisation
Considérez l'exemple suivant :
$shopOwner = ShopMeta::where('shopId', '=', $theID)
->where('metadataKey', '=', 2001)
->firstOrNew();
if ($shopOwner->exists) {
// Update the existing record
} else {
// Insert a new record
}
Dans cet exemple, la méthode firstOrNew() est utilisée pour rechercher un enregistrement ShopMeta basé sur shopId et metadataKey. Si l'enregistrement existe, le bloc if est exécuté et l'enregistrement existant est mis à jour. Sinon, le bloc else est exécuté et un nouvel enregistrement est inséré.
Exemple étendu
Voici un exemple plus complet qui met en valeur la puissance de firstOrNew() :
$user = User::firstOrNew(array('name' => Input::get('name')));
$user->foo = Input::get('foo');
$user->save();
Documentation mise à jour
Veuillez noter que le lien de documentation fourni dans la réponse n'est plus à jour. Pour la dernière version de Laravel, reportez-vous à la documentation suivante :
[Documentation Laravel mise à jour](https://laravel.com/docs/8.x/eloquent)
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3