File tree Expand file tree Collapse file tree 3 files changed +18
-10
lines changed Expand file tree Collapse file tree 3 files changed +18
-10
lines changed Original file line number Diff line number Diff line change @@ -303,6 +303,7 @@ public static function toObject(array $desc)
303
303
throw new \InvalidArgumentException ('Unexpected operator with subtree: ' .var_export ($ desc ['sub_tree ' ], true ));
304
304
}
305
305
unset($ desc ['sub_tree ' ]);
306
+ unset($ desc ['delim ' ]);
306
307
if (!empty ($ desc )) {
307
308
throw new \InvalidArgumentException ('Unexpected parameters in exception: ' .var_export ($ desc , true ));
308
309
}
@@ -322,6 +323,7 @@ public static function toObject(array $desc)
322
323
unset($ desc ['sub_tree ' ]);
323
324
unset($ desc ['alias ' ]);
324
325
unset($ desc ['direction ' ]);
326
+ unset($ desc ['delim ' ]);
325
327
if (!empty ($ desc )) {
326
328
throw new \InvalidArgumentException ('Unexpected parameters in exception: ' .var_export ($ desc , true ));
327
329
}
Original file line number Diff line number Diff line change 4
4
5
5
use SQLParser \Node \NodeFactory ;
6
6
use SQLParser \Node \Operator ;
7
+ use SQLParser \Node \Reserved ;
7
8
8
9
/**
9
10
* This class has the ability to create instances implementing NodeInterface based on a descriptive array.
@@ -21,19 +22,21 @@ public static function toObject(array $desc)
21
22
return NodeFactory::toObject ($ item );
22
23
}, $ desc ['SELECT ' ]);
23
24
$ columns = NodeFactory::simplify ($ columns );
24
- $ select ->setColumns ($ columns );
25
25
26
- if (isset ($ desc ['OPTIONS ' ])) {
27
- $ options = $ desc ['OPTIONS ' ];
28
- $ key = array_search ('DISTINCT ' , $ options );
29
- if ($ key !== false ) {
30
- $ select ->setDistinct (true );
31
- unset($ options [$ key ]);
32
- } else {
33
- $ select ->setDistinct (false );
26
+ $ options = [];
27
+ foreach ($ columns as $ key => $ column ) {
28
+ if ($ column instanceof Reserved) {
29
+ if (strtoupper ($ column ->getBaseExpression ()) === 'DISTINCT ' ) {
30
+ $ select ->setDistinct (true );
31
+ } else {
32
+ $ options [] = $ column ->getBaseExpression ();
33
+ }
34
+ unset($ columns [$ key ]);
34
35
}
35
- $ select ->setOptions ($ options );
36
36
}
37
+ $ select ->setOptions ($ options );
38
+
39
+ $ select ->setColumns ($ columns );
37
40
38
41
if (isset ($ desc ['FROM ' ])) {
39
42
$ from = self ::mapArrayToNodeObjectList ($ desc ['FROM ' ]);
Original file line number Diff line number Diff line change @@ -126,6 +126,9 @@ public function testStandardSelect()
126
126
127
127
$ sql = 'SELECT * FROM users WHERE (login LIKE :login) ' ;
128
128
$ this ->assertEquals ('SELECT * FROM users ' , self ::simplifySql ($ magicQuery ->build ($ sql )));
129
+
130
+ $ sql = 'SELECT DISTINCT login FROM users ' ;
131
+ $ this ->assertEquals ('SELECT DISTINCT login FROM users ' , self ::simplifySql ($ magicQuery ->build ($ sql )));
129
132
}
130
133
131
134
/**
You can’t perform that action at this time.
0 commit comments