2013-10-10 5 views

Antwort

33

Einfach Verwendung des increment Methode machen:

DB::table('users')->increment('position'); 

Gleiches gilt für decrement:

DB::table('users')->decrement('rank'); 

Sie auch den zweiten Parameter auf die Menge eingestellt werden, die Sie hinzufügen möchten/subtrahieren:

DB::table('users')->increment('posts', 5); 
DB::table('users')->decrement('likes', 3); 

auch, wenn Sie andere Spalten aktualisieren, müssen ein mit ihm lange, übergeben Sie es als dritten Parameter:

DB::table('users')->increment('range', 3, array(
    'name' => 'Raphael', 
    'rank' => 10 
)); 

Und das gleiche gilt für Eloquent Modelle, aber auch:

$firstUser = User::find(1); 
$firstUser->increment('height', 0.1, array(
    'active' => false 
)); 
+0

Super vielen Dank für Ihre Erklärung ..: D – yussan

+0

Ich habe etwas zu fragen, was ist, wenn ich das Ergebnis nach dem Erhöhen oder Senken überprüfen möchte? Wie check das Ergebnis ist 0 oder negativ? – Ben

+0

@Ben Warum nicht vor dem Inkrement prüfen? Einfach die Logik anpassen? – rmobis

-1

einfach Sie die DB :: raw Methode wie folgt verwendet werden: Table::update(DB::raw('position=position+1'));

1

Dies funktionierte gut für mich

\Models\User::where("id", $userId)->increment("points"); 
+0

Dies liefert keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. – vidit

+0

Nun, meine Antwort baut auf der Antwort auf, die bereits für diejenigen gegeben wurde, die nach einem einzigen Datensatz suchen. Es generiert diese Abfrage UPDATE-Tabelle SET-Position = Position + 1 Wobei ID = 1 –

2

Sie können auch mit DB :: raw Methode wie folgt tun:

DB::table('tablename')->where(your condition)->update(['position' => DB::raw('position+1')]); 

Sie können auch tun andere Operationen mit diesem wie

DB::table('tablename')->where(your condition)->update(['position' => DB::raw('position * 2')]); 
Verwandte Themen