From 3ddd15e15840f165dc49a9e5dbd15881030d6c0b Mon Sep 17 00:00:00 2001 From: Kevin Doole Date: Mon, 28 Mar 2016 23:15:39 -0500 Subject: [PATCH 1/5] Fix docblock formats --- src/Illuminate/Database/Eloquent/Builder.php | 10 +++++----- src/Illuminate/Database/Query/Builder.php | 14 +++++++------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Illuminate/Database/Eloquent/Builder.php b/src/Illuminate/Database/Eloquent/Builder.php index da09c5eb93c7..5823ac4db8e3 100755 --- a/src/Illuminate/Database/Eloquent/Builder.php +++ b/src/Illuminate/Database/Eloquent/Builder.php @@ -330,8 +330,8 @@ public function value($column) /** * Chunk the results of the query. * - * @param int $count - * @param callable $callback + * @param int $count + * @param callable $callback * @return bool */ public function chunk($count, callable $callback) @@ -357,9 +357,9 @@ public function chunk($count, callable $callback) /** * Chunk the results of a query by comparing numeric IDs. * - * @param int $count - * @param callable $callback - * @param string $column + * @param int $count + * @param callable $callback + * @param string $column * @return bool */ public function chunkById($count, callable $callback, $column = 'id') diff --git a/src/Illuminate/Database/Query/Builder.php b/src/Illuminate/Database/Query/Builder.php index a5261efe3873..cf92331c0457 100755 --- a/src/Illuminate/Database/Query/Builder.php +++ b/src/Illuminate/Database/Query/Builder.php @@ -1335,10 +1335,10 @@ public function forPage($page, $perPage = 15) /** * Constrain the query to the next "page" of results after a given ID. * - * @param int $perPage - * @param int $column - * @param string $column - * @return Builder|static + * @param int $perPage + * @param int $lastId + * @param string $column + * @return \Illuminate\Database\Query\Builder|static */ public function pageAfterId($perPage = 15, $lastId = 0, $column = 'id') { @@ -1648,9 +1648,9 @@ public function chunk($count, callable $callback) /** * Chunk the results of a query by comparing numeric IDs. * - * @param int $count - * @param callable $callback - * @param string $column + * @param int $count + * @param callable $callback + * @param string $idColumn * @return bool */ public function chunkById($count, callable $callback, $column = 'id') From bf947e1655dfc2d18adbb89c0c7b86641ec9fbf8 Mon Sep 17 00:00:00 2001 From: Kevin Doole Date: Mon, 28 Mar 2016 23:21:50 -0500 Subject: [PATCH 2/5] Add query builder chunkById test; slight method cleanup --- src/Illuminate/Database/Eloquent/Builder.php | 4 +-- src/Illuminate/Database/Query/Builder.php | 10 +++--- .../Database/DatabaseEloquentBuilderTest.php | 2 +- tests/Database/DatabaseQueryBuilderTest.php | 32 +++++++++++++++++++ 4 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/Illuminate/Database/Eloquent/Builder.php b/src/Illuminate/Database/Eloquent/Builder.php index 5823ac4db8e3..e14e081f9728 100755 --- a/src/Illuminate/Database/Eloquent/Builder.php +++ b/src/Illuminate/Database/Eloquent/Builder.php @@ -373,9 +373,7 @@ public function chunkById($count, callable $callback, $column = 'id') return false; } - if ($column) { - $lastId = $results->last()->{$column}; - } + $lastId = $results->last()->{$column}; $results = $this->pageAfterId($count, $lastId, $column)->get(); } diff --git a/src/Illuminate/Database/Query/Builder.php b/src/Illuminate/Database/Query/Builder.php index cf92331c0457..81f228443a97 100755 --- a/src/Illuminate/Database/Query/Builder.php +++ b/src/Illuminate/Database/Query/Builder.php @@ -1653,22 +1653,20 @@ public function chunk($count, callable $callback) * @param string $idColumn * @return bool */ - public function chunkById($count, callable $callback, $column = 'id') + public function chunkById($count, callable $callback, $idColumn = 'id') { $lastId = null; - $results = $this->pageAfterId($count, 0, $column)->get(); + $results = $this->pageAfterId($count, 0, $idColumn)->get(); while (! empty($results)) { if (call_user_func($callback, $results) === false) { return false; } - if ($column) { - $lastId = last($results)->{$column}; - } + $lastId = last($results)->{$idColumn}; - $results = $this->pageAfterId($count, $lastId, $column)->get(); + $results = $this->pageAfterId($count, $lastId, $idColumn)->get(); } return true; diff --git a/tests/Database/DatabaseEloquentBuilderTest.php b/tests/Database/DatabaseEloquentBuilderTest.php index 7fde71ddfccb..38ae46075bb2 100755 --- a/tests/Database/DatabaseEloquentBuilderTest.php +++ b/tests/Database/DatabaseEloquentBuilderTest.php @@ -194,7 +194,7 @@ public function testChunkCanBeStoppedByReturningFalse() }); } - public function testChunkPaginatesUsingWhereBetweenIds() + public function testChunkPaginatesUsingId() { $builder = m::mock('Illuminate\Database\Eloquent\Builder[pageAfterId,get]', [$this->getMockQueryBuilder()]); $builder->shouldReceive('pageAfterId')->once()->with(2, 0, 'someIdField')->andReturn($builder); diff --git a/tests/Database/DatabaseQueryBuilderTest.php b/tests/Database/DatabaseQueryBuilderTest.php index 742933220475..9d00ec2a864e 100755 --- a/tests/Database/DatabaseQueryBuilderTest.php +++ b/tests/Database/DatabaseQueryBuilderTest.php @@ -1470,6 +1470,23 @@ public function testTableValuedFunctionAsTableInSqlServer() $this->assertEquals('select * from [users](1,2)', $builder->toSql()); } + public function testChunkPaginatesUsingId() + { + $builder = $this->getMockQueryBuilder(); + + $builder->shouldReceive('pageAfterId')->once()->with(2, 0, 'someIdField')->andReturn($builder); + $builder->shouldReceive('pageAfterId')->once()->with(2, 2, 'someIdField')->andReturn($builder); + $builder->shouldReceive('pageAfterId')->once()->with(2, 10, 'someIdField')->andReturn($builder); + + $builder->shouldReceive('get')->times(3)->andReturn( + [(object) ['someIdField' => 1], (object) ['someIdField' => 2]], + [(object) ['someIdField' => 10]], + [] + ); + + $builder->chunkById(2, function ($results) {}, 'someIdField'); + } + protected function getBuilder() { $grammar = new Illuminate\Database\Query\Grammars\Grammar; @@ -1517,4 +1534,19 @@ protected function getMySqlBuilderWithProcessor() return new Builder(m::mock('Illuminate\Database\ConnectionInterface'), $grammar, $processor); } + + /** + * @return m\MockInterface + */ + protected function getMockQueryBuilder() + { + + $builder = m::mock('Illuminate\Database\Query\Builder[pageAfterId,get]', [ + m::mock('Illuminate\Database\ConnectionInterface'), + new Illuminate\Database\Query\Grammars\Grammar, + m::mock('Illuminate\Database\Query\Processors\Processor'), + ]); + + return $builder; + } } From 130a405547eef1c2e3931548a9c38a82c360ca53 Mon Sep 17 00:00:00 2001 From: Kevin Doole Date: Mon, 28 Mar 2016 23:26:35 -0500 Subject: [PATCH 3/5] Revert a param name --- src/Illuminate/Database/Query/Builder.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Illuminate/Database/Query/Builder.php b/src/Illuminate/Database/Query/Builder.php index 81f228443a97..a3a1ce6ca72c 100755 --- a/src/Illuminate/Database/Query/Builder.php +++ b/src/Illuminate/Database/Query/Builder.php @@ -1650,23 +1650,23 @@ public function chunk($count, callable $callback) * * @param int $count * @param callable $callback - * @param string $idColumn + * @param string $column * @return bool */ - public function chunkById($count, callable $callback, $idColumn = 'id') + public function chunkById($count, callable $callback, $column = 'id') { $lastId = null; - $results = $this->pageAfterId($count, 0, $idColumn)->get(); + $results = $this->pageAfterId($count, 0, $column)->get(); while (! empty($results)) { if (call_user_func($callback, $results) === false) { return false; } - $lastId = last($results)->{$idColumn}; + $lastId = last($results)->{$column}; - $results = $this->pageAfterId($count, $lastId, $idColumn)->get(); + $results = $this->pageAfterId($count, $lastId, $column)->get(); } return true; From ab24e0d1f68584e973ece32d41a2302110e97d74 Mon Sep 17 00:00:00 2001 From: Kevin Doole Date: Mon, 28 Mar 2016 23:33:43 -0500 Subject: [PATCH 4/5] Adjust whitespace in one more docblock --- src/Illuminate/Database/Query/Builder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Database/Query/Builder.php b/src/Illuminate/Database/Query/Builder.php index a3a1ce6ca72c..2737f7c01ca0 100755 --- a/src/Illuminate/Database/Query/Builder.php +++ b/src/Illuminate/Database/Query/Builder.php @@ -1621,8 +1621,8 @@ protected function restoreFieldsForCount() /** * Chunk the results of the query. * - * @param int $count - * @param callable $callback + * @param int $count + * @param callable $callback * @return bool */ public function chunk($count, callable $callback) From 6c4d6ec9385ad2301662a7b6cf69c6f9595723f4 Mon Sep 17 00:00:00 2001 From: Kevin Doole Date: Tue, 29 Mar 2016 00:36:56 -0500 Subject: [PATCH 5/5] Adjust various code style infringements --- src/Illuminate/Database/Eloquent/Builder.php | 14 ++++++------- src/Illuminate/Database/Query/Builder.php | 22 ++++++++++---------- tests/Database/DatabaseQueryBuilderTest.php | 1 - 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/Illuminate/Database/Eloquent/Builder.php b/src/Illuminate/Database/Eloquent/Builder.php index e14e081f9728..cd18ece7ffba 100755 --- a/src/Illuminate/Database/Eloquent/Builder.php +++ b/src/Illuminate/Database/Eloquent/Builder.php @@ -330,9 +330,9 @@ public function value($column) /** * Chunk the results of the query. * - * @param int $count - * @param callable $callback - * @return bool + * @param int $count + * @param callable $callback + * @return bool */ public function chunk($count, callable $callback) { @@ -357,10 +357,10 @@ public function chunk($count, callable $callback) /** * Chunk the results of a query by comparing numeric IDs. * - * @param int $count - * @param callable $callback - * @param string $column - * @return bool + * @param int $count + * @param callable $callback + * @param string $column + * @return bool */ public function chunkById($count, callable $callback, $column = 'id') { diff --git a/src/Illuminate/Database/Query/Builder.php b/src/Illuminate/Database/Query/Builder.php index 2737f7c01ca0..d10972679db1 100755 --- a/src/Illuminate/Database/Query/Builder.php +++ b/src/Illuminate/Database/Query/Builder.php @@ -1335,10 +1335,10 @@ public function forPage($page, $perPage = 15) /** * Constrain the query to the next "page" of results after a given ID. * - * @param int $perPage - * @param int $lastId - * @param string $column - * @return \Illuminate\Database\Query\Builder|static + * @param int $perPage + * @param int $lastId + * @param string $column + * @return \Illuminate\Database\Query\Builder|static */ public function pageAfterId($perPage = 15, $lastId = 0, $column = 'id') { @@ -1621,9 +1621,9 @@ protected function restoreFieldsForCount() /** * Chunk the results of the query. * - * @param int $count - * @param callable $callback - * @return bool + * @param int $count + * @param callable $callback + * @return bool */ public function chunk($count, callable $callback) { @@ -1648,10 +1648,10 @@ public function chunk($count, callable $callback) /** * Chunk the results of a query by comparing numeric IDs. * - * @param int $count - * @param callable $callback - * @param string $column - * @return bool + * @param int $count + * @param callable $callback + * @param string $column + * @return bool */ public function chunkById($count, callable $callback, $column = 'id') { diff --git a/tests/Database/DatabaseQueryBuilderTest.php b/tests/Database/DatabaseQueryBuilderTest.php index 9d00ec2a864e..d0dbb36199b9 100755 --- a/tests/Database/DatabaseQueryBuilderTest.php +++ b/tests/Database/DatabaseQueryBuilderTest.php @@ -1540,7 +1540,6 @@ protected function getMySqlBuilderWithProcessor() */ protected function getMockQueryBuilder() { - $builder = m::mock('Illuminate\Database\Query\Builder[pageAfterId,get]', [ m::mock('Illuminate\Database\ConnectionInterface'), new Illuminate\Database\Query\Grammars\Grammar,