Maison >développement back-end >tutoriel php >Comment condenser les opérations de base de données avec la méthode firstOrNew() de Laravel Eloquent ?
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.
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.
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.
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.
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!