From 56212604387ca8d94c26547b27795cb24c3d7896 Mon Sep 17 00:00:00 2001 From: Joseph Silber Date: Sun, 19 Mar 2017 22:56:42 -0400 Subject: [PATCH] Don't require returning the query from "when" (#18422) --- src/Illuminate/Database/Concerns/BuildsQueries.php | 10 ++++------ tests/Database/DatabaseQueryBuilderTest.php | 6 +++--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/Illuminate/Database/Concerns/BuildsQueries.php b/src/Illuminate/Database/Concerns/BuildsQueries.php index 17f34d30a120..e56e020e821c 100644 --- a/src/Illuminate/Database/Concerns/BuildsQueries.php +++ b/src/Illuminate/Database/Concerns/BuildsQueries.php @@ -74,21 +74,19 @@ public function first($columns = ['*']) /** * Apply the callback's query changes if the given "value" is true. * - * @param bool $value + * @param mixed $value * @param \Closure $callback * @param \Closure $default * @return mixed */ public function when($value, $callback, $default = null) { - $builder = $this; - if ($value) { - $builder = $callback($builder, $value); + return $callback($this, $value) ?: $this; } elseif ($default) { - $builder = $default($builder, $value); + return $default($this, $value) ?: $this; } - return $builder; + return $this; } } diff --git a/tests/Database/DatabaseQueryBuilderTest.php b/tests/Database/DatabaseQueryBuilderTest.php index 88ec8bd48a94..c8d063d33677 100755 --- a/tests/Database/DatabaseQueryBuilderTest.php +++ b/tests/Database/DatabaseQueryBuilderTest.php @@ -135,7 +135,7 @@ public function testWhenCallback() $callback = function ($query, $condition) { $this->assertTrue($condition); - return $query->where('id', '=', 1); + $query->where('id', '=', 1); }; $builder = $this->getBuilder(); @@ -152,13 +152,13 @@ public function testWhenCallbackWithDefault() $callback = function ($query, $condition) { $this->assertEquals($condition, 'truthy'); - return $query->where('id', '=', 1); + $query->where('id', '=', 1); }; $default = function ($query, $condition) { $this->assertEquals($condition, 0); - return $query->where('id', '=', 2); + $query->where('id', '=', 2); }; $builder = $this->getBuilder();