From 9442df1073b4a4813ad1fddc95e3d250f420cc51 Mon Sep 17 00:00:00 2001 From: Ditty Date: Sat, 8 Feb 2020 05:31:42 +0300 Subject: [PATCH 1/2] Fix truncate on models According to docs array or object might be returned, so we need to add options. See https://docs.mongodb.com/php-library/v1.5/reference/method/MongoDBCollection-drop/ --- src/Jenssegers/Mongodb/Query/Builder.php | 6 +++++- tests/QueryBuilderTest.php | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Jenssegers/Mongodb/Query/Builder.php b/src/Jenssegers/Mongodb/Query/Builder.php index 558edbdf3..b2e1daf33 100644 --- a/src/Jenssegers/Mongodb/Query/Builder.php +++ b/src/Jenssegers/Mongodb/Query/Builder.php @@ -700,7 +700,11 @@ public function from($collection, $as = null) */ public function truncate() { - $result = $this->collection->drop(); + $options = [ + 'typeMap' => ['root' => 'object', 'document' => 'object'], + ]; + + $result = $this->collection->drop($options); return (1 == (int) $result->ok); } diff --git a/tests/QueryBuilderTest.php b/tests/QueryBuilderTest.php index 625e59cad..3306ede29 100644 --- a/tests/QueryBuilderTest.php +++ b/tests/QueryBuilderTest.php @@ -175,7 +175,8 @@ public function testDelete() public function testTruncate() { DB::collection('users')->insert(['name' => 'John Doe']); - DB::collection('users')->truncate(); + $result = DB::collection('users')->truncate(); + $this->assertEquals(1, $result); $this->assertEquals(0, DB::collection('users')->count()); } From 4e92dcc09da9451bd57834a26bcf6e9e7b089c3f Mon Sep 17 00:00:00 2001 From: Ditty Date: Sat, 8 Feb 2020 05:36:56 +0300 Subject: [PATCH 2/2] Add tests for model truncate --- tests/ModelTest.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/ModelTest.php b/tests/ModelTest.php index 108d28554..e998cade6 100644 --- a/tests/ModelTest.php +++ b/tests/ModelTest.php @@ -572,4 +572,13 @@ public function testChunkById(): void $this->assertEquals(3, $count); } + + public function testTruncateModel() + { + User::create(['name' => 'John Doe']); + + User::truncate(); + + $this->assertEquals(0, User::count()); + } }