From 6769fcaf538345140e7dd021e0b686f144651988 Mon Sep 17 00:00:00 2001 From: tchiotludo <tchiot.ludo@gmail.com> Date: Thu, 8 Sep 2016 12:57:25 +0200 Subject: [PATCH] InnerHit new implementation : doc & fix --- docs/InnerHits/Nested.md | 19 +++++++++++---- src/InnerHit/NestedInnerHit.php | 34 +++++++++++++++++---------- tests/InnerHit/NestedInnerHitTest.php | 4 ++-- 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/docs/InnerHits/Nested.md b/docs/InnerHits/Nested.md index 76b6990..1aef8df 100644 --- a/docs/InnerHits/Nested.md +++ b/docs/InnerHits/Nested.md @@ -37,7 +37,9 @@ And now the query via DSL: ```php $matchQuery = new MatchQuery('comments.message', '[different query]'); $nestedQuery = new NestedQuery('comments', $matchQuery); -$innerHit = new NestedInnerHit('comment', 'comments', $matchQuery); +$searchQuery = new Search(); +$searchQuery->add($matchQuery); +$innerHit = new NestedInnerHit('comment', 'comments', $searchQuery); $search = new Search(); $search->addQuery(new MatchQuery('comments.message', '[actual query]')); @@ -98,14 +100,21 @@ And now the query via DSL: ```php $matchQuery = new MatchQuery('cars.manufacturers.country', 'Japan'); +$matchSearch = new Search(); +$matchSearch->addQuery($matchQuery); + $nestedQuery = new NestedQuery('cars.manufacturers', $matchQuery); -$innerHitNested = new NestedInnerHit('manufacturers', 'cars.manufacturers', $matchQuery); -$innerHit = new NestedInnerHit('cars', 'cars', $nestedQuery); -$innerHit->addInnerHit($innerHitNested); +$nestedSearch = new Search(); +$nestedSearch->addQuery($nestedQuery); + +$innerHitNested = new NestedInnerHit('manufacturers', 'cars.manufacturers', $matchSearch); + +$innerHit = new NestedInnerHit('cars', 'cars', $nestedSearch); +$nestedSearch->addInnerHit($innerHitNested); $search = new Search(); $search->addInnerHit($innerHit); $search->toArray(); ``` -[1]: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-inner-hits.html \ No newline at end of file +[1]: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-inner-hits.html diff --git a/src/InnerHit/NestedInnerHit.php b/src/InnerHit/NestedInnerHit.php index 7df7421..e04707a 100644 --- a/src/InnerHit/NestedInnerHit.php +++ b/src/InnerHit/NestedInnerHit.php @@ -32,22 +32,24 @@ class NestedInnerHit implements BuilderInterface private $path; /** - * @var BuilderInterface + * @var Search */ - private $query; + private $search; /** * Inner hits container init. * * @param string $name * @param string $path - * @param Search $query + * @param Search $search */ - public function __construct($name, $path, Search $query = null) + public function __construct($name, $path, Search $search = null) { $this->setName($name); $this->setPath($path); - $this->setQuery($query); + if ($search) { + $this->setSearch($search); + } } /** @@ -60,26 +62,34 @@ class NestedInnerHit implements BuilderInterface /** * @param string $path + * + * @return $this */ public function setPath($path) { $this->path = $path; + + return $this; } /** - * @return BuilderInterface + * @return Search */ - public function getQuery() + public function getSearch() { - return $this->query; + return $this->search; } /** - * @param Search $query + * @param Search $search + * + * @return $this */ - public function setQuery(Search $query = null) + public function setSearch(Search $search) { - $this->query = $query; + $this->search = $search; + + return $this; } /** @@ -95,7 +105,7 @@ class NestedInnerHit implements BuilderInterface */ public function toArray() { - $out = $this->getQuery() ? $this->getQuery()->toArray() : new \stdClass(); + $out = $this->getSearch() ? $this->getSearch()->toArray() : new \stdClass(); $out = [ $this->getPathType() => [ diff --git a/tests/InnerHit/NestedInnerHitTest.php b/tests/InnerHit/NestedInnerHitTest.php index 44c59ee..c9bfe8a 100644 --- a/tests/InnerHit/NestedInnerHitTest.php +++ b/tests/InnerHit/NestedInnerHitTest.php @@ -111,10 +111,10 @@ class NestedInnerHitTest extends \PHPUnit_Framework_TestCase $hit = new NestedInnerHit('test', 'acme', new Search()); $hit->setName('foo'); $hit->setPath('bar'); - $hit->setQuery($search); + $hit->setSearch($search); $this->assertEquals('foo', $hit->getName()); $this->assertEquals('bar', $hit->getPath()); - $this->assertEquals($search, $hit->getQuery()); + $this->assertEquals($search, $hit->getSearch()); } } -- GitLab