Skip to content

Commit dfa9ff2

Browse files
committed
Added modified protection to increments #97
1 parent dcf4276 commit dfa9ff2

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

src/Jenssegers/Mongodb/Query/Builder.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,13 @@ public function increment($column, $amount = 1, array $extra = array())
402402
$query['$set'] = $extra;
403403
}
404404

405+
// Protect
406+
$this->where(function($query) use ($column)
407+
{
408+
$query->where($column, 'exists', false);
409+
$query->orWhereNotNull($column);
410+
});
411+
405412
return $this->performUpdate($query);
406413
}
407414

tests/QueryBuilderTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,7 @@ public function testIncrement()
511511
DB::collection('users')->insert(array(
512512
array('name' => 'John Doe', 'age' => 30, 'note' => 'adult'),
513513
array('name' => 'Jane Doe', 'age' => 10, 'note' => 'minor'),
514+
array('name' => 'Robert Roe', 'age' => null),
514515
array('name' => 'Mark Moe'),
515516
));
516517

@@ -548,6 +549,8 @@ public function testIncrement()
548549
$this->assertEquals(11, $user['age']);
549550
$user = DB::collection('users')->where('name', 'Jane Doe')->first();
550551
$this->assertEquals(21, $user['age']);
552+
$user = DB::collection('users')->where('name', 'Robert Roe')->first();
553+
$this->assertEquals(null, $user['age']);
551554
$user = DB::collection('users')->where('name', 'Mark Moe')->first();
552555
$this->assertEquals(1, $user['age']);
553556
}

0 commit comments

Comments
 (0)