From 20c6093eb7f5e364fc58496f37976c9786b583e3 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Tue, 9 Apr 2019 08:06:59 -0500 Subject: [PATCH] Return proper value instead of _id on QueryBuilder Fixes #1741 --- src/Jenssegers/Mongodb/Query/Builder.php | 10 ++++++++++ tests/QueryBuilderTest.php | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/Jenssegers/Mongodb/Query/Builder.php b/src/Jenssegers/Mongodb/Query/Builder.php index ad63d462e..e088132cd 100644 --- a/src/Jenssegers/Mongodb/Query/Builder.php +++ b/src/Jenssegers/Mongodb/Query/Builder.php @@ -203,6 +203,16 @@ public function find($id, $columns = []) return $this->where('_id', '=', $this->convertKey($id))->first($columns); } + /** + * @inheritdoc + */ + public function value($column) + { + $result = (array) $this->first([$column]); + + return Arr::get($result, $column); + } + /** * @inheritdoc */ diff --git a/tests/QueryBuilderTest.php b/tests/QueryBuilderTest.php index 0807b4ece..097ded65b 100644 --- a/tests/QueryBuilderTest.php +++ b/tests/QueryBuilderTest.php @@ -701,4 +701,16 @@ public function testProjections() $this->assertEquals(1, count($result['tags'])); } } + + public function testValue() + { + DB::collection('books')->insert([ + ['title' => 'Moby-Dick', 'author' => ['first_name' => 'Herman', 'last_name' => 'Melville']] + ]); + + $this->assertEquals('Moby-Dick', DB::collection('books')->value('title')); + $this->assertEquals(['first_name' => 'Herman', 'last_name' => 'Melville'], DB::collection('books')->value('author')); + $this->assertEquals('Herman', DB::collection('books')->value('author.first_name')); + $this->assertEquals('Melville', DB::collection('books')->value('author.last_name')); + } }