Skip to content

Commit d8d1308

Browse files
committed
[QueryBuilder] divide support
1 parent c7e8563 commit d8d1308

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

src/Query/Builder.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,12 @@ public function multiply($column, $amount = 1, array $extra = [], array $options
911911
return $this->performUpdate($query, $options);
912912
}
913913

914+
/** @inheritdoc */
915+
public function divide($column, $amount = 1, array $extra = [], array $options = [])
916+
{
917+
return $this->multiply($column, 1 / $amount, $extra, $options);
918+
}
919+
914920
/** @inheritdoc */
915921
public function pluck($column, $key = null)
916922
{

tests/QueryBuilderTest.php

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,36 +1052,49 @@ public function testIncrement()
10521052
$this->assertEquals(1, $user->age);
10531053
}
10541054

1055-
public function testMultiply()
1055+
public function testMultiplyAndDivide()
10561056
{
10571057
DB::table('users')->insert([
1058-
['name' => 'John Doe', 'salary' => 3000, 'note' => 'adult'],
1059-
['name' => 'Jane Doe', 'salary' => 1000, 'note' => 'minor'],
1058+
['name' => 'John Doe', 'salary' => 88000, 'note' => 'senior'],
1059+
['name' => 'Jane Doe', 'salary' => 64000, 'note' => 'junior'],
10601060
['name' => 'Robert Roe', 'salary' => null],
10611061
['name' => 'Mark Moe'],
10621062
]);
10631063

10641064
$user = DB::table('users')->where('name', 'John Doe')->first();
1065-
$this->assertEquals(3000, $user->salary);
1065+
$this->assertEquals(88000, $user->salary);
10661066

10671067
DB::table('users')->where('name', 'John Doe')->multiply('salary');
10681068
$user = DB::table('users')->where('name', 'John Doe')->first();
1069-
$this->assertEquals(3000, $user->salary);
1069+
$this->assertEquals(88000, $user->salary);
1070+
1071+
DB::table('users')->where('name', 'John Doe')->divide('salary');
1072+
$user = DB::table('users')->where('name', 'John Doe')->first();
1073+
$this->assertEquals(88000, $user->salary);
10701074

10711075
DB::table('users')->where('name', 'John Doe')->multiply('salary', 2);
10721076
$user = DB::table('users')->where('name', 'John Doe')->first();
1073-
$this->assertEquals(6000, $user->salary);
1077+
$this->assertEquals(176000, $user->salary);
1078+
1079+
DB::table('users')->where('name', 'John Doe')->divide('salary', 2);
1080+
$user = DB::table('users')->where('name', 'John Doe')->first();
1081+
$this->assertEquals(88000, $user->salary);
10741082

1075-
DB::table('users')->where('name', 'Jane Doe')->multiply('salary', 10, ['note' => 'adult']);
1083+
DB::table('users')->where('name', 'Jane Doe')->multiply('salary', 10, ['note' => 'senior']);
10761084
$user = DB::table('users')->where('name', 'Jane Doe')->first();
1077-
$this->assertEquals(10000, $user->salary);
1078-
$this->assertEquals('adult', $user->note);
1085+
$this->assertEquals(640000, $user->salary);
1086+
$this->assertEquals('senior', $user->note);
1087+
1088+
DB::table('users')->where('name', 'John Doe')->divide('salary', 2, ['note' => 'junior']);
1089+
$user = DB::table('users')->where('name', 'John Doe')->first();
1090+
$this->assertEquals(44000, $user->salary);
1091+
$this->assertEquals('junior', $user->note);
10791092

10801093
DB::table('users')->multiply('salary');
10811094
$user = DB::table('users')->where('name', 'John Doe')->first();
1082-
$this->assertEquals(6000, $user->salary);
1095+
$this->assertEquals(44000, $user->salary);
10831096
$user = DB::table('users')->where('name', 'Jane Doe')->first();
1084-
$this->assertEquals(10000, $user->salary);
1097+
$this->assertEquals(640000, $user->salary);
10851098
$user = DB::table('users')->where('name', 'Robert Roe')->first();
10861099
$this->assertNull($user->salary);
10871100
$user = DB::table('users')->where('name', 'Mark Moe')->first();

0 commit comments

Comments
 (0)