diff --git a/src/Illuminate/Database/Eloquent/Collection.php b/src/Illuminate/Database/Eloquent/Collection.php index 70c90e97ce9..eafe059473f 100755 --- a/src/Illuminate/Database/Eloquent/Collection.php +++ b/src/Illuminate/Database/Eloquent/Collection.php @@ -300,9 +300,11 @@ public function fresh($with = []) ->get() ->getDictionary(); - return $this->map(function ($model) use ($freshModels) { - return $model->exists && isset($freshModels[$model->getKey()]) - ? $freshModels[$model->getKey()] : null; + return $this->filter(function ($model) use ($freshModels) { + return $model->exists && isset($freshModels[$model->getKey()]); + }) + ->map(function ($model) use ($freshModels) { + return $freshModels[$model->getKey()]; }); } diff --git a/tests/Database/DatabaseEloquentIntegrationTest.php b/tests/Database/DatabaseEloquentIntegrationTest.php index a5273c26dd0..55e413a0509 100644 --- a/tests/Database/DatabaseEloquentIntegrationTest.php +++ b/tests/Database/DatabaseEloquentIntegrationTest.php @@ -1340,10 +1340,15 @@ public function testFreshMethodOnCollection() EloquentTestUser::find(1)->update(['name' => 'Mathieu TUDISCO']); EloquentTestUser::find(2)->update(['email' => 'dev@mathieutu.ovh']); - $this->assertEquals($users->map->fresh(), $users->fresh()); + $this->assertCount(3, $users); + $this->assertNotEquals('Mathieu TUDISCO', $users[0]->name); + $this->assertNotEquals('dev@mathieutu.ovh', $users[1]->email); - $users = new Collection; - $this->assertEquals($users->map->fresh(), $users->fresh()); + $refreshedUsers = $users->fresh(); + + $this->assertCount(2, $refreshedUsers); + $this->assertEquals('Mathieu TUDISCO', $refreshedUsers[0]->name); + $this->assertEquals('dev@mathieutu.ovh', $refreshedUsers[1]->email); } public function testTimestampsUsingDefaultDateFormat() diff --git a/tests/Integration/Database/EloquentCollectionFreshTest.php b/tests/Integration/Database/EloquentCollectionFreshTest.php index 745be7ae307..b0f0e098387 100644 --- a/tests/Integration/Database/EloquentCollectionFreshTest.php +++ b/tests/Integration/Database/EloquentCollectionFreshTest.php @@ -2,6 +2,7 @@ namespace Illuminate\Tests\Integration\Database; +use Illuminate\Database\Eloquent\Collection as EloquentCollection; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; use Illuminate\Tests\Integration\Database\Fixtures\User; @@ -30,8 +31,11 @@ public function testEloquentCollectionFresh() $collection = User::all(); - User::whereKey($collection->pluck('id')->toArray())->delete(); + $collection->first()->delete(); - $this->assertEmpty($collection->fresh()->filter()); + $freshCollection = $collection->fresh(); + + $this->assertCount(1, $freshCollection); + $this->assertInstanceOf(EloquentCollection::class, $freshCollection); } }