Skip to content

Commit bc74046

Browse files
authored
Merge pull request #36 from gulien/fixInList
Fixing IN list
2 parents a0f4b0e + 8b66bee commit bc74046

File tree

4 files changed

+32
-1
lines changed

4 files changed

+32
-1
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ language: php
33
php:
44
- 5.6
55
- 7.0
6+
- 7.1
67

78
before_script:
89
- composer install --no-interaction

src/SQLParser/Node/Expression.php

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,28 @@ public function setBrackets($brackets)
149149
$this->brackets = $brackets;
150150
}
151151

152+
private $delimiter = ' ';
153+
154+
/**
155+
* @return string
156+
*/
157+
public function getDelimiter()
158+
{
159+
return $this->delimiter;
160+
}
161+
162+
/**
163+
* Sets the delimiter for the list. Defaults to ' '.
164+
*
165+
* @param string $delimiter
166+
*/
167+
public function setDelimiter($delimiter)
168+
{
169+
$this->delimiter = $delimiter;
170+
}
171+
172+
173+
152174
/**
153175
* Returns a Mouf instance descriptor describing this object.
154176
*
@@ -164,6 +186,7 @@ public function toInstanceDescriptor(MoufManager $moufManager)
164186
$instanceDescriptor->getProperty('alias')->setValue(NodeFactory::nodeToInstanceDescriptor($this->alias, $moufManager));
165187
$instanceDescriptor->getProperty('direction')->setValue(NodeFactory::nodeToInstanceDescriptor($this->direction, $moufManager));
166188
$instanceDescriptor->getProperty('brackets')->setValue(NodeFactory::nodeToInstanceDescriptor($this->brackets, $moufManager));
189+
$instanceDescriptor->getProperty('delimiter')->setValue(NodeFactory::nodeToInstanceDescriptor($this->delimiter, $moufManager));
167190

168191
return $instanceDescriptor;
169192
}
@@ -180,7 +203,7 @@ public function toInstanceDescriptor(MoufManager $moufManager)
180203
*/
181204
public function toSql(array $parameters = array(), Connection $dbConnection = null, $indent = 0, $conditionsMode = self::CONDITION_APPLY)
182205
{
183-
$sql = NodeFactory::toSql($this->subTree, $dbConnection, $parameters, ' ', false, $indent, $conditionsMode);
206+
$sql = NodeFactory::toSql($this->subTree, $dbConnection, $parameters, $this->delimiter, false, $indent, $conditionsMode);
184207

185208
if ($sql === null) {
186209
return null;

src/SQLParser/Node/NodeFactory.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,11 @@ public static function toObject(array $desc)
371371
$expr->setBrackets(true);
372372
}
373373

374+
if ($desc['expr_type'] == ExpressionType::IN_LIST) {
375+
$expr->setBrackets(true);
376+
$expr->setDelimiter(',');
377+
}
378+
374379
// Debug:
375380
unset($desc['base_expr']);
376381
unset($desc['expr_type']);

tests/Mouf/Database/MagicQueryTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ public function testStandardSelect()
150150
'date' => '2016-01-01'
151151
])));
152152

153+
$sql = 'SELECT * FROM users WHERE id IN (1, 3)';
154+
$this->assertEquals("SELECT * FROM users WHERE id IN (1, 3)", self::simplifySql($magicQuery->build($sql)));
153155
}
154156

155157
/**

0 commit comments

Comments
 (0)