From b4dd5830feb2141c5073b5306a8d460fb683e9a4 Mon Sep 17 00:00:00 2001 From: Jens Segers Date: Thu, 17 Sep 2015 10:03:50 +0200 Subject: [PATCH 1/5] Add back freshTimestamp --- src/Jenssegers/Mongodb/Model.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Jenssegers/Mongodb/Model.php b/src/Jenssegers/Mongodb/Model.php index 03bd49ec2..fdc10286a 100644 --- a/src/Jenssegers/Mongodb/Model.php +++ b/src/Jenssegers/Mongodb/Model.php @@ -199,6 +199,16 @@ protected function getDateFormat() return $this->dateFormat ?: 'Y-m-d H:i:s'; } + /** + * Get a fresh timestamp for the model. + * + * @return MongoDate + */ + public function freshTimestamp() + { + return new MongoDate; + } + /** * Get the table associated with the model. * From e940af806eee48fde56b5f7f3e95882ec7b2c414 Mon Sep 17 00:00:00 2001 From: Jens Segers Date: Thu, 24 Sep 2015 12:38:37 +0200 Subject: [PATCH 2/5] Fix issue #596 --- src/Jenssegers/Mongodb/Eloquent/HybridRelations.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Jenssegers/Mongodb/Eloquent/HybridRelations.php b/src/Jenssegers/Mongodb/Eloquent/HybridRelations.php index b6f898632..6887817c2 100644 --- a/src/Jenssegers/Mongodb/Eloquent/HybridRelations.php +++ b/src/Jenssegers/Mongodb/Eloquent/HybridRelations.php @@ -22,7 +22,7 @@ trait HybridRelations { public function hasOne($related, $foreignKey = null, $localKey = null) { // Check if it is a relation with an original model. - if ($related instanceof Model) + if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model')) { return parent::hasOne($related, $foreignKey, $localKey); } @@ -49,7 +49,7 @@ public function hasOne($related, $foreignKey = null, $localKey = null) public function morphOne($related, $name, $type = null, $id = null, $localKey = null) { // Check if it is a relation with an original model. - if ($related instanceof Model) + if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model')) { return parent::morphOne($related, $name, $type, $id, $localKey ); } @@ -76,7 +76,7 @@ public function morphOne($related, $name, $type = null, $id = null, $localKey = public function hasMany($related, $foreignKey = null, $localKey = null) { // Check if it is a relation with an original model. - if ($related instanceof Model) + if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model')) { return parent::hasMany($related, $foreignKey, $localKey); } @@ -103,7 +103,7 @@ public function hasMany($related, $foreignKey = null, $localKey = null) public function morphMany($related, $name, $type = null, $id = null, $localKey = null) { // Check if it is a relation with an original model. - if ($related instanceof Model) + if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model')) { return parent::morphMany($related, $name, $type, $id, $localKey); } @@ -144,7 +144,7 @@ public function belongsTo($related, $foreignKey = null, $otherKey = null, $relat } // Check if it is a relation with an original model. - if ($related instanceof Model) + if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model')) { return parent::belongsTo($related, $foreignKey, $otherKey, $relation); } @@ -235,7 +235,7 @@ public function belongsToMany($related, $collection = null, $foreignKey = null, } // Check if it is a relation with an original model. - if ($related instanceof Model) + if (! is_subclass_of($related, 'Jenssegers\Mongodb\Model')) { return parent::belongsToMany($related, $collection, $foreignKey, $otherKey, $relation); } From 52f6efc8d5b9ceabf4cf7730079583381fddfc68 Mon Sep 17 00:00:00 2001 From: Jens Segers Date: Thu, 24 Sep 2015 06:39:30 -0400 Subject: [PATCH 3/5] Applied fixes from StyleCI --- src/Jenssegers/Mongodb/Model.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Jenssegers/Mongodb/Model.php b/src/Jenssegers/Mongodb/Model.php index fdc10286a..449d77529 100644 --- a/src/Jenssegers/Mongodb/Model.php +++ b/src/Jenssegers/Mongodb/Model.php @@ -200,10 +200,10 @@ protected function getDateFormat() } /** - * Get a fresh timestamp for the model. - * - * @return MongoDate - */ + * Get a fresh timestamp for the model. + * + * @return MongoDate + */ public function freshTimestamp() { return new MongoDate; From 341f9dd0bccdf08896441ec6d4755b1c1fe8d17c Mon Sep 17 00:00:00 2001 From: Alex Luneburg Date: Thu, 15 Oct 2015 16:47:47 +1300 Subject: [PATCH 4/5] Update QueryBuilder get method to run getFresh method Following the latest update of the laravel framework (5.1.20), the BaseQuery builder that used to just run the getFresh method (overriden by the mongodb child builder) in the get function, now calls the runSelect method that relies on the mysql Grammar object being present that this builder does not need to run. This update simply removes the parent get() call and directly calls it's own getFresh method, thus return the functionality to what it was before the laravel update. --- src/Jenssegers/Mongodb/Query/Builder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Jenssegers/Mongodb/Query/Builder.php b/src/Jenssegers/Mongodb/Query/Builder.php index 58ed14124..dc2d1d9f0 100644 --- a/src/Jenssegers/Mongodb/Query/Builder.php +++ b/src/Jenssegers/Mongodb/Query/Builder.php @@ -147,7 +147,7 @@ public function find($id, $columns = []) */ public function get($columns = []) { - return parent::get($columns); + return $this->getFresh($columns); } /** From e0f39d5fb5f2c024d19b2dc5308658c883d62f0b Mon Sep 17 00:00:00 2001 From: alexandre-butynski Date: Thu, 15 Oct 2015 12:22:54 +0200 Subject: [PATCH 5/5] Overwrite Laravel base query builder exists method Fix #607 --- src/Jenssegers/Mongodb/Query/Builder.php | 10 ++++++++++ tests/QueryTest.php | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/src/Jenssegers/Mongodb/Query/Builder.php b/src/Jenssegers/Mongodb/Query/Builder.php index dc2d1d9f0..531197eba 100644 --- a/src/Jenssegers/Mongodb/Query/Builder.php +++ b/src/Jenssegers/Mongodb/Query/Builder.php @@ -349,6 +349,16 @@ public function aggregate($function, $columns = []) } } + /** + * Determine if any rows exist for the current query. + * + * @return bool + */ + public function exists() + { + return ! is_null($this->first()); + } + /** * Force the query to only return distinct results. * diff --git a/tests/QueryTest.php b/tests/QueryTest.php index 2db648d8b..9b3593257 100644 --- a/tests/QueryTest.php +++ b/tests/QueryTest.php @@ -206,6 +206,12 @@ public function testCount() $this->assertEquals(6, $count); } + public function testExists() + { + $this->assertFalse(User::where('age', '>', 37)->exists()); + $this->assertTrue(User::where('age', '<', 37)->exists()); + } + public function testSubquery() { $users = User::where('title', 'admin')->orWhere(function ($query)