File tree Expand file tree Collapse file tree 3 files changed +95
-1
lines changed
Expand file tree Collapse file tree 3 files changed +95
-1
lines changed Original file line number Diff line number Diff line change @@ -78,6 +78,12 @@ public function addMappingFieldObject(\Spameri\ElasticQuery\Mapping\Settings\Map
7878 }
7979
8080
81+ public function addMappingSubField (\Spameri \ElasticQuery \Mapping \Settings \Mapping \SubFields $ subFields ): void
82+ {
83+ $ this ->mapping ->addSubField ($ subFields );
84+ }
85+
86+
8187 public function addAnalyzer (\Spameri \ElasticQuery \Mapping \AnalyzerInterface $ analyzer ): void
8288 {
8389 $ this ->analysis ->analyzer ()->add ($ analyzer );
Original file line number Diff line number Diff line change @@ -43,12 +43,23 @@ public function addFieldObject(\Spameri\ElasticQuery\Mapping\Settings\Mapping\Fi
4343 }
4444
4545
46+ public function addSubField (\Spameri \ElasticQuery \Mapping \Settings \Mapping \SubFields $ subFields ): void
47+ {
48+ $ this ->fields ->add ($ subFields );
49+ }
50+
51+
4652 public function toArray (): array
4753 {
4854 $ fields = [];
4955 /** @var \Spameri\ElasticQuery\Mapping\Settings\Mapping\FieldInterface $field */
5056 foreach ($ this ->fields as $ field ) {
51- $ fields [$ field ->key ()] = $ field ->toArray ()[$ field ->key ()];
57+ if ($ field instanceof \Spameri \ElasticQuery \Mapping \Settings \Mapping \SubFields) {
58+ $ fields [$ field ->key ()] = $ field ->toArray ();
59+
60+ } else {
61+ $ fields [$ field ->key ()] = $ field ->toArray ()[$ field ->key ()];
62+ }
5263 }
5364
5465 return [
Original file line number Diff line number Diff line change 1+ <?php declare (strict_types = 1 );
2+
3+ namespace Spameri \ElasticQuery \Mapping \Settings \Mapping ;
4+
5+ class SubFields
6+ implements \Spameri \ElasticQuery \Mapping \Settings \Mapping \FieldInterface
7+ {
8+
9+ /**
10+ * @var string
11+ */
12+ private $ name ;
13+
14+ /**
15+ * @var string
16+ */
17+ private $ type ;
18+
19+ /**
20+ * @var \Spameri\ElasticQuery\Mapping\Settings\Mapping\FieldCollection
21+ */
22+ private $ fields ;
23+
24+
25+ public function __construct (
26+ string $ name ,
27+ string $ type = \Spameri \Elastic \Model \ValidateMapping \AllowedValues::TYPE_KEYWORD ,
28+ ?\Spameri \ElasticQuery \Mapping \Settings \Mapping \FieldCollection $ fields = NULL
29+ )
30+ {
31+ $ this ->name = $ name ;
32+ if ($ fields === NULL ) {
33+ $ fields = new \Spameri \ElasticQuery \Mapping \Settings \Mapping \FieldCollection ();
34+ }
35+
36+ if ( ! \in_array ($ type , \Spameri \Elastic \Model \ValidateMapping \AllowedValues::TYPES , TRUE )) {
37+ throw new \Spameri \ElasticQuery \Exception \InvalidArgumentException (
38+ 'Not allowed type see \Spameri\Elastic\Model\ValidateMapping\AllowedValues::TYPES '
39+ );
40+ }
41+ $ this ->type = $ type ;
42+ $ this ->fields = $ fields ;
43+ }
44+
45+
46+ public function key (): string
47+ {
48+ return $ this ->name ;
49+ }
50+
51+
52+ public function getFields (): \Spameri \ElasticQuery \Mapping \Settings \Mapping \FieldCollection
53+ {
54+ return $ this ->fields ;
55+ }
56+
57+
58+ public function addMappingField (\Spameri \ElasticQuery \Mapping \Settings \Mapping \Field $ field ): void
59+ {
60+ $ this ->fields ->add ($ field );
61+ }
62+
63+
64+ public function toArray (): array
65+ {
66+ $ array ['fields ' ] = [];
67+ $ array ['type ' ] = $ this ->type ;
68+
69+ /** @var \Spameri\ElasticQuery\Mapping\Settings\Mapping\Field $field */
70+ foreach ($ this ->fields as $ field ) {
71+ $ array ['fields ' ][$ field ->key ()] = $ field ->toArray ()[$ field ->key ()];
72+ }
73+
74+ return $ array ;
75+ }
76+
77+ }
You can’t perform that action at this time.
0 commit comments