web-dev-qa-db-fra.com

Incrémenter les colonnes en laravel

Est-il possible d'incrémenter plus d'une colonne dans laravel?

Disons:

DB::table('my_table')
->where('rowID', 1)
->increment('column1', 2)
->increment('column2', 10)
->increment('column3', 13)
->increment('column4', 5);

Mais cela se traduit par:

Call to a member function increment() on integer

Je veux juste trouver un moyen efficace de le faire en utilisant les fonctions données par laravel. Merci. Toutes les suggestions feront.

11
Vainglory07

Il n'y a pas de fonction existante pour faire cela. Vous devez utiliser update():

DB::table('my_table')
   ->where('rowID', 1)
   ->update([
       'column1' => DB::raw('column1 + 2'),
       'column2' => DB::raw('column2 + 10'),
       'column3' => DB::raw('column3 + 13'),
       'column4' => DB::raw('column4 + 5'),
   ]);
31
lukasgeiter

Pour référence future en 5.2, il a été possible de procéder comme suit:

Vous pouvez également spécifier des colonnes supplémentaires à mettre à jour pendant l'opération:

DB :: table ('utilisateurs') -> incrémente ('votes', 1, ['name' => 'John']); </ i>

Source: https://laravel.com/docs/5.2/queries#updates

7

Tout d’abord, le résultat de increment est un entier conforme à la documentation: http://laravel.com/api/4.2/Illuminate/Database/Query/Builder.html

Il faudrait donc faire un appel pour chaque incrément:

DB::table('my_table')
->where('rowID', 1)
->increment('column1', 2);
DB::table('my_table')
->where('rowID', 1)
->increment('column2', 10);
DB::table('my_table')
->where('rowID', 1)
->increment('column3', 13);
DB::table('my_table')
->where('rowID', 1)
->increment('column4', 5);

Je ne parviens pas à trouver une solution plus rapide, à moins que vous ne souhaitiez la résoudre avec une commande de requête de mise à jour brute.

De plus, votre exemple de code générera probablement une erreur si vous avez fermé l'instruction avec ; et continuez avec un nouvel appel ->increment sur la ligne suivante.

5
Luceos

Incréments et diminutions dans Laravel Modèle éloquent

L'option Ajouter au panier est l'une des fonctions les plus importantes des sites Web de commerce électronique. La partie délicate consiste à obtenir le nombre d’articles du panier à afficher sur l’icône du panier. L’approche prédominante pour y parvenir consiste à utiliser la fonction d’incrémentation et de décrémentation sur Laravel. Cela facilite également l'ajout ou le retrait d'un produit de votre panier. La façon de mettre en œuvre cette fonction est,

$user = User::find(‘517c43667db388101e00000f’);
$user->cart_count++;
// $user->cart_count--; // for decrement the count
$user->save()

Un moyen alternatif et plus simple est,

$user = User::find($article_id);
$user->increment('cart_count');

Aussi ceux-ci fonctionneront:

$user->increment('cart_count');// increase one count
$user->decrement('cart_count'); // decrease one count
$user->increment('cart_count',10); // increase 10 count
$user->decrement('cart_count',10); // decrease 10 count
2
Praveen AK

Maintenant dans laravel 5.7 laravel query builder, incrémenter et décrémenter , cela peut être fait facilement. Model::where('id', "rowID")->increment('columne1'); ou vous pouvez utiliser DB DB::table("my_table")->where('id', "rowID")->increment('column1');

1
Ziaur Rahman