Maison  >  Article  >  développement back-end  >  Comment condenser les opérations de base de données avec la méthode firstOrNew() de Laravel Eloquent ?

Comment condenser les opérations de base de données avec la méthode firstOrNew() de Laravel Eloquent ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-20 08:52:02817parcourir

How to Condense Database Operations with Laravel Eloquent's firstOrNew() Method?

Fonctionnalité de Laravel Eloquent : créer ou mettre à jour des enregistrements

Une approche abrégée pour les opérations de base de données

Dans la boîte à outils de base de données de Laravel, Eloquent fournit une méthode pratique pour gérer à la fois l'insertion d'enregistrements et les mises à jour simultanément. Cette méthode vous évite d'avoir à écrire du code explicite pour ces opérations.

Création d'un nouvel enregistrement ou mise à jour d'un enregistrement existant :

Imaginez un scénario dans lequel vous devez déterminer s'il faut insérer un nouvel enregistrement ou mettre à jour un existant en fonction de l’existence d’une condition particulière. Traditionnellement, cela nécessiterait des vérifications distinctes de l'existence des enregistrements et des requêtes d'insertion ou de mise à jour ultérieures.

Une solution condensée :

Eloquent de Laravel introduit une approche concise à cette tâche : firstOrNew(). Comme démontré dans l'extrait PHP fourni :

<code class="php">$shopOwner = ShopMeta::where('shopId', '=', $theID)
    ->where('metadataKey', '=', 2001)->first();</code>

Ce code vérifie si un enregistrement existe dans la table ShopMeta avec le shopId et la metadataKey spécifiés. Si aucun enregistrement de ce type n'est trouvé, il renvoie null.

Ajout ou modification de données :

Pour continuer le processus d'insertion/mise à jour :

<code class="php">if ($shopOwner == null) {
    // Insert new record into database
} else {
    // Update the existing record
}</code>

Si $shopOwner est en effet nul, un nouvel enregistrement peut être inséré. Sinon, l'enregistrement existant peut être mis à jour.

Affinage avec firstOrNew() :

Une solution améliorée, comme suggérée par "lu cip", consiste à utiliser la méthode firstOrNew(), qui élimine la nécessité d'une vérification conditionnelle :

<code class="php">$user = User::firstOrNew(array('name' => Input::get('name')));
$user->foo = Input::get('foo');
$user->save();</code>

Avec cette approche mise à jour, si un enregistrement avec le nom spécifié existe, il est récupéré ; sinon, un nouvel enregistrement est créé. Les opérations ultérieures (par exemple, la définition de foo) et la sauvegarde de l'enregistrement sont rationalisées sous un seul appel save().

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!

Déclaration:
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