@@ -13,11 +13,11 @@ discard block |
||
13 | 13 | * @return $this |
14 | 14 | */ |
15 | 15 | public function orderBy($expression, $direction = 'asc') { |
16 | - if(strtolower($direction) != 'desc') { |
|
16 | + if (strtolower($direction) != 'desc') { |
|
17 | 17 | $direction = 'ASC'; |
18 | 18 | } |
19 | - if(is_array($expression)) { |
|
20 | - if(!count($expression)) { |
|
19 | + if (is_array($expression)) { |
|
20 | + if (!count($expression)) { |
|
21 | 21 | return $this; |
22 | 22 | } |
23 | 23 | $arguments = array( |
@@ -34,7 +34,7 @@ discard block |
||
34 | 34 | */ |
35 | 35 | public function orderByValues($fieldName, array $values) { |
36 | 36 | $expr = []; |
37 | - foreach(array_values($values) as $idx => $value) { |
|
37 | + foreach (array_values($values) as $idx => $value) { |
|
38 | 38 | $expr[] = $this->db()->quoteExpression("WHEN ? THEN ?", array($value, $idx)); |
39 | 39 | } |
40 | 40 | $this->orderBy[] = array(sprintf("CASE %s\n\t\t%s\n\tEND", $this->db()->quoteField($fieldName), join("\n\t\t", $expr)), 'ASC'); |
@@ -46,12 +46,12 @@ discard block |
||
46 | 46 | * @return string |
47 | 47 | */ |
48 | 48 | protected function buildOrder($query) { |
49 | - if(!count($this->orderBy)) { |
|
49 | + if (!count($this->orderBy)) { |
|
50 | 50 | return $query; |
51 | 51 | } |
52 | 52 | $query .= "ORDER BY\n"; |
53 | 53 | $arr = array(); |
54 | - foreach($this->orderBy as $order) { |
|
54 | + foreach ($this->orderBy as $order) { |
|
55 | 55 | list($expression, $direction) = $order; |
56 | 56 | $arr[] = sprintf("\t%s %s", $expression, strtoupper($direction)); |
57 | 57 | } |
@@ -16,14 +16,14 @@ |
||
16 | 16 | public function throwMoreConcreteException(PDOException $exception) { |
17 | 17 | $code = $exception->errorInfo[1]; |
18 | 18 | $message = (string) $exception->errorInfo[2]; |
19 | - switch($code) { |
|
19 | + switch ($code) { |
|
20 | 20 | case 2006: throw new DatabaseHasGoneAwayException($message, $code, $exception); |
21 | 21 | case 1213: throw new SqlDeadLockException($message, $code, $exception); |
22 | 22 | case 1205: throw new LockWaitTimeoutExceededException($message, $code, $exception); |
23 | 23 | case 1062: throw new DuplicateUniqueKeyException($message, $code, $exception); |
24 | 24 | } |
25 | 25 | /** @link http://php.net/manual/en/class.exception.php#Hcom115813 (cHao's comment) */ |
26 | - if(!is_string($message) || !is_int($code)) { |
|
26 | + if (!is_string($message) || !is_int($code)) { |
|
27 | 27 | throw new SqlException((string) $message, (int) $code, $exception); |
28 | 28 | } |
29 | 29 | throw $exception; |
@@ -169,7 +169,7 @@ |
||
169 | 169 | } |
170 | 170 | |
171 | 171 | /** |
172 | - * @return bool |
|
172 | + * @return integer |
|
173 | 173 | */ |
174 | 174 | public function getFoundRows() { |
175 | 175 | return $this->foundRows; |
@@ -61,19 +61,19 @@ discard block |
||
61 | 61 | * @return array[] |
62 | 62 | */ |
63 | 63 | public function fetchRows(Closure $callback = null) { |
64 | - return $this->createTempStatement(function (QueryStatement $statement) use ($callback) { |
|
64 | + return $this->createTempStatement(function(QueryStatement $statement) use ($callback) { |
|
65 | 65 | $data = $statement->fetchAll(\PDO::FETCH_ASSOC); |
66 | - if($this->preserveTypes) { |
|
66 | + if ($this->preserveTypes) { |
|
67 | 67 | $columnDefinitions = FieldTypeProvider::getFieldTypes($statement); |
68 | - foreach($data as &$row) { |
|
68 | + foreach ($data as &$row) { |
|
69 | 69 | $row = FieldValueConverter::convertValues($row, $columnDefinitions); |
70 | 70 | } |
71 | 71 | } |
72 | - if($callback !== null) { |
|
73 | - return call_user_func(function ($resultData = []) use ($data, $callback) { |
|
74 | - foreach($data as $row) { |
|
72 | + if ($callback !== null) { |
|
73 | + return call_user_func(function($resultData = []) use ($data, $callback) { |
|
74 | + foreach ($data as $row) { |
|
75 | 75 | $result = $callback($row); |
76 | - if($result !== null && !($result instanceof DBIgnoreRow)) { |
|
76 | + if ($result !== null && !($result instanceof DBIgnoreRow)) { |
|
77 | 77 | $resultData[] = $result; |
78 | 78 | } else { |
79 | 79 | $resultData[] = $row; |
@@ -91,8 +91,8 @@ discard block |
||
91 | 91 | * @return array[]|\Generator |
92 | 92 | */ |
93 | 93 | public function fetchRowsLazy(Closure $callback = null) { |
94 | - if(version_compare(PHP_VERSION, '5.5', '<')) { |
|
95 | - return new YieldPolyfillIterator($this, $callback, $this->preserveTypes, function () { |
|
94 | + if (version_compare(PHP_VERSION, '5.5', '<')) { |
|
95 | + return new YieldPolyfillIterator($this, $callback, $this->preserveTypes, function() { |
|
96 | 96 | return $this->createStatement(); |
97 | 97 | }); |
98 | 98 | } |
@@ -107,18 +107,18 @@ discard block |
||
107 | 107 | * @throws \Exception |
108 | 108 | */ |
109 | 109 | public function fetchRow(Closure $callback = null) { |
110 | - return $this->createTempStatement(function (QueryStatement $statement) use ($callback) { |
|
110 | + return $this->createTempStatement(function(QueryStatement $statement) use ($callback) { |
|
111 | 111 | $row = $statement->fetch(\PDO::FETCH_ASSOC); |
112 | - if(!is_array($row)) { |
|
112 | + if (!is_array($row)) { |
|
113 | 113 | return []; |
114 | 114 | } |
115 | - if($this->preserveTypes) { |
|
115 | + if ($this->preserveTypes) { |
|
116 | 116 | $columnDefinitions = FieldTypeProvider::getFieldTypes($statement); |
117 | 117 | $row = FieldValueConverter::convertValues($row, $columnDefinitions); |
118 | 118 | } |
119 | - if($callback !== null) { |
|
119 | + if ($callback !== null) { |
|
120 | 120 | $result = $callback($row); |
121 | - if($result !== null) { |
|
121 | + if ($result !== null) { |
|
122 | 122 | $row = $result; |
123 | 123 | } |
124 | 124 | } |
@@ -131,11 +131,11 @@ discard block |
||
131 | 131 | * @return mixed[] |
132 | 132 | */ |
133 | 133 | public function fetchKeyValue($treatValueAsArray = false) { |
134 | - return $this->createTempStatement(function (QueryStatement $statement) use ($treatValueAsArray) { |
|
135 | - if($treatValueAsArray) { |
|
134 | + return $this->createTempStatement(function(QueryStatement $statement) use ($treatValueAsArray) { |
|
135 | + if ($treatValueAsArray) { |
|
136 | 136 | $rows = $statement->fetchAll(\PDO::FETCH_ASSOC); |
137 | 137 | $result = array(); |
138 | - foreach($rows as $row) { |
|
138 | + foreach ($rows as $row) { |
|
139 | 139 | list($key) = array_values($row); |
140 | 140 | $result[$key] = $row; |
141 | 141 | } |
@@ -152,11 +152,11 @@ discard block |
||
152 | 152 | public function fetchGroups(array $fields) { |
153 | 153 | $rows = $this->fetchRows(); |
154 | 154 | $result = array(); |
155 | - foreach($rows as $row) { |
|
155 | + foreach ($rows as $row) { |
|
156 | 156 | $tmp = &$result; |
157 | - foreach($fields as $field) { |
|
157 | + foreach ($fields as $field) { |
|
158 | 158 | $value = $row[$field]; |
159 | - if(!array_key_exists($value, $tmp)) { |
|
159 | + if (!array_key_exists($value, $tmp)) { |
|
160 | 160 | $tmp[$value] = []; |
161 | 161 | } |
162 | 162 | $tmp = &$tmp[$value]; |
@@ -170,7 +170,7 @@ discard block |
||
170 | 170 | * @return string[] |
171 | 171 | */ |
172 | 172 | public function fetchArray() { |
173 | - return $this->createTempStatement(function (QueryStatement $stmt) { |
|
173 | + return $this->createTempStatement(function(QueryStatement $stmt) { |
|
174 | 174 | return $stmt->fetchAll(\PDO::FETCH_COLUMN); |
175 | 175 | }); |
176 | 176 | } |
@@ -180,9 +180,9 @@ discard block |
||
180 | 180 | * @return null|bool|string|int|float |
181 | 181 | */ |
182 | 182 | public function fetchValue($default = null) { |
183 | - return $this->createTempStatement(function (QueryStatement $stmt) use ($default) { |
|
183 | + return $this->createTempStatement(function(QueryStatement $stmt) use ($default) { |
|
184 | 184 | $result = $stmt->fetch(\PDO::FETCH_NUM); |
185 | - if($result !== false) { |
|
185 | + if ($result !== false) { |
|
186 | 186 | return $result[0]; |
187 | 187 | } |
188 | 188 | return $default; |
@@ -222,7 +222,7 @@ discard block |
||
222 | 222 | $query = $this->__toString(); |
223 | 223 | $statement = $db->prepare($query); |
224 | 224 | $statement->execute($this->values); |
225 | - if($this->getCalcFoundRows()) { |
|
225 | + if ($this->getCalcFoundRows()) { |
|
226 | 226 | $this->foundRows = (int) $db->query('SELECT FOUND_ROWS()')->fetchColumn(); |
227 | 227 | } |
228 | 228 | return $statement; |
@@ -49,7 +49,7 @@ discard block |
||
49 | 49 | $timer = microtime(true); |
50 | 50 | $response = $this->statement->execute($params); |
51 | 51 | $this->queryLoggers->log($this->query, microtime(true)-$timer); |
52 | - if(!$response) { |
|
52 | + if (!$response) { |
|
53 | 53 | throw new SqlException('Execution returned with "false".'); |
54 | 54 | } |
55 | 55 | }); |
@@ -64,7 +64,7 @@ discard block |
||
64 | 64 | */ |
65 | 65 | public function fetchAll($fetchStyle = PDO::FETCH_ASSOC, $fetchArgument = null, array $ctorArgs = []) { |
66 | 66 | return $this->exceptionHandler(function() use ($fetchStyle, $fetchArgument, $ctorArgs) { |
67 | - if($fetchArgument !== null) { |
|
67 | + if ($fetchArgument !== null) { |
|
68 | 68 | return $this->statement->fetchAll($fetchStyle, $fetchArgument, $ctorArgs); |
69 | 69 | } |
70 | 70 | return $this->statement->fetchAll($fetchStyle); |
@@ -12,15 +12,15 @@ |
||
12 | 12 | * @return string |
13 | 13 | */ |
14 | 14 | public static function build(Database $db, $query, array $conditions, $token) { |
15 | - if(!count($conditions)) { |
|
15 | + if (!count($conditions)) { |
|
16 | 16 | return $query; |
17 | 17 | } |
18 | 18 | $query .= "{$token}\n"; |
19 | 19 | $arr = []; |
20 | - foreach($conditions as $condition) { |
|
20 | + foreach ($conditions as $condition) { |
|
21 | 21 | list($expression, $arguments) = $condition; |
22 | - if(is_array($expression)) { |
|
23 | - foreach($expression as $key => $value) { |
|
22 | + if (is_array($expression)) { |
|
23 | + foreach ($expression as $key => $value) { |
|
24 | 24 | $arr = self::buildCondition($arr, "`{$key}`=?", [$value], $db); |
25 | 25 | } |
26 | 26 | } else { |
@@ -35,7 +35,7 @@ discard block |
||
35 | 35 | * @param PDO $pdo |
36 | 36 | */ |
37 | 37 | public function __construct(PDO $pdo) { |
38 | - if($pdo->getAttribute(PDO::ATTR_ERRMODE) === PDO::ERRMODE_SILENT) { |
|
38 | + if ($pdo->getAttribute(PDO::ATTR_ERRMODE) === PDO::ERRMODE_SILENT) { |
|
39 | 39 | $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); |
40 | 40 | } |
41 | 41 | $this->pdo = $pdo; |
@@ -64,7 +64,7 @@ discard block |
||
64 | 64 | * @return QueryStatement |
65 | 65 | */ |
66 | 66 | public function query($query) { |
67 | - return $this->buildQueryStatement($query, function ($query) { |
|
67 | + return $this->buildQueryStatement($query, function($query) { |
|
68 | 68 | $stmt = $this->pdo->query($query); |
69 | 69 | return $stmt; |
70 | 70 | }); |
@@ -76,7 +76,7 @@ discard block |
||
76 | 76 | * @return QueryStatement |
77 | 77 | */ |
78 | 78 | public function prepare($query) { |
79 | - return $this->buildQueryStatement((string) $query, function ($query) { |
|
79 | + return $this->buildQueryStatement((string) $query, function($query) { |
|
80 | 80 | $stmt = $this->pdo->prepare($query); |
81 | 81 | return $stmt; |
82 | 82 | }); |
@@ -88,11 +88,11 @@ discard block |
||
88 | 88 | * @return int |
89 | 89 | */ |
90 | 90 | public function exec($query, array $params = array()) { |
91 | - return $this->exceptionHandler(function () use ($query, $params) { |
|
91 | + return $this->exceptionHandler(function() use ($query, $params) { |
|
92 | 92 | $stmt = $this->pdo->prepare($query); |
93 | 93 | $timer = microtime(true); |
94 | 94 | $stmt->execute($params); |
95 | - $this->queryLoggers->log($query, microtime(true) - $timer); |
|
95 | + $this->queryLoggers->log($query, microtime(true)-$timer); |
|
96 | 96 | $result = $stmt->rowCount(); |
97 | 97 | $stmt->closeCursor(); |
98 | 98 | return $result; |
@@ -112,12 +112,12 @@ discard block |
||
112 | 112 | */ |
113 | 113 | public function getTableFields($table) { |
114 | 114 | $table = $this->select()->aliasReplacer()->replace($table); |
115 | - if(array_key_exists($table, self::$tableFields)) { |
|
115 | + if (array_key_exists($table, self::$tableFields)) { |
|
116 | 116 | return self::$tableFields[$table]; |
117 | 117 | } |
118 | 118 | $stmt = $this->pdo->query("DESCRIBE {$table}"); |
119 | 119 | $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC); |
120 | - self::$tableFields[$table] = array_map(function ($row) { return $row['Field']; }, $rows); |
|
120 | + self::$tableFields[$table] = array_map(function($row) { return $row['Field']; }, $rows); |
|
121 | 121 | $stmt->closeCursor(); |
122 | 122 | return self::$tableFields[$table]; |
123 | 123 | } |
@@ -128,11 +128,11 @@ discard block |
||
128 | 128 | * @return string |
129 | 129 | */ |
130 | 130 | public function quoteExpression($expression, array $arguments = array()) { |
131 | - $func = function () use ($arguments) { |
|
131 | + $func = function() use ($arguments) { |
|
132 | 132 | static $idx = -1; |
133 | 133 | $idx++; |
134 | 134 | $index = $idx; |
135 | - if(array_key_exists($index, $arguments)) { |
|
135 | + if (array_key_exists($index, $arguments)) { |
|
136 | 136 | $argument = $arguments[$index]; |
137 | 137 | $value = $this->quote($argument); |
138 | 138 | } else { |
@@ -149,14 +149,14 @@ discard block |
||
149 | 149 | * @return string |
150 | 150 | */ |
151 | 151 | public function quote($value) { |
152 | - if(is_null($value)) { |
|
152 | + if (is_null($value)) { |
|
153 | 153 | $result = 'NULL'; |
154 | - } elseif($value instanceof Builder\DBExpr) { |
|
154 | + } elseif ($value instanceof Builder\DBExpr) { |
|
155 | 155 | $result = $value->getExpression(); |
156 | - } elseif($value instanceof Builder\Select) { |
|
156 | + } elseif ($value instanceof Builder\Select) { |
|
157 | 157 | $result = sprintf('(%s)', (string) $value); |
158 | - } elseif(is_array($value)) { |
|
159 | - $result = join(', ', array_map(function ($value) { return $this->quote($value); }, $value)); |
|
158 | + } elseif (is_array($value)) { |
|
159 | + $result = join(', ', array_map(function($value) { return $this->quote($value); }, $value)); |
|
160 | 160 | } else { |
161 | 161 | $result = $this->pdo->quote($value); |
162 | 162 | } |
@@ -171,7 +171,7 @@ discard block |
||
171 | 171 | if (is_numeric($field) || !is_string($field)) { |
172 | 172 | throw new UnexpectedValueException('Field name is invalid'); |
173 | 173 | } |
174 | - if(strpos($field, '`') !== false) { |
|
174 | + if (strpos($field, '`') !== false) { |
|
175 | 175 | return (string) $field; |
176 | 176 | } |
177 | 177 | $parts = explode('.', $field); |
@@ -184,7 +184,7 @@ discard block |
||
184 | 184 | */ |
185 | 185 | public function select(array $fields = null) { |
186 | 186 | $select = new RunnableSelect($this); |
187 | - if($fields !== null) { |
|
187 | + if ($fields !== null) { |
|
188 | 188 | $select->fields($fields); |
189 | 189 | } |
190 | 190 | return $select; |
@@ -196,7 +196,7 @@ discard block |
||
196 | 196 | */ |
197 | 197 | public function insert(array $fields = null) { |
198 | 198 | $insert = new Builder\RunnableInsert($this); |
199 | - if($fields !== null) { |
|
199 | + if ($fields !== null) { |
|
200 | 200 | $insert->addAll($fields); |
201 | 201 | } |
202 | 202 | return $insert; |
@@ -208,7 +208,7 @@ discard block |
||
208 | 208 | */ |
209 | 209 | public function update(array $fields = null) { |
210 | 210 | $update = new Builder\RunnableUpdate($this); |
211 | - if($fields !== null) { |
|
211 | + if ($fields !== null) { |
|
212 | 212 | $update->setAll($fields); |
213 | 213 | } |
214 | 214 | return $update; |
@@ -225,8 +225,8 @@ discard block |
||
225 | 225 | * @return $this |
226 | 226 | */ |
227 | 227 | public function transactionStart() { |
228 | - if((int) $this->transactionLevel === 0) { |
|
229 | - if($this->pdo->inTransaction()) { |
|
228 | + if ((int) $this->transactionLevel === 0) { |
|
229 | + if ($this->pdo->inTransaction()) { |
|
230 | 230 | $this->outerTransaction = true; |
231 | 231 | } else { |
232 | 232 | $this->pdo->beginTransaction(); |
@@ -241,7 +241,7 @@ discard block |
||
241 | 241 | * @throws \Exception |
242 | 242 | */ |
243 | 243 | public function transactionCommit() { |
244 | - return $this->transactionEnd(function () { |
|
244 | + return $this->transactionEnd(function() { |
|
245 | 245 | $this->pdo->commit(); |
246 | 246 | }); |
247 | 247 | } |
@@ -251,7 +251,7 @@ discard block |
||
251 | 251 | * @throws \Exception |
252 | 252 | */ |
253 | 253 | public function transactionRollback() { |
254 | - return $this->transactionEnd(function () { |
|
254 | + return $this->transactionEnd(function() { |
|
255 | 255 | $this->pdo->rollBack(); |
256 | 256 | }); |
257 | 257 | } |
@@ -265,7 +265,7 @@ discard block |
||
265 | 265 | public function dryRun($callback = null) { |
266 | 266 | $result = null; |
267 | 267 | $exception = null; |
268 | - if(!$this->pdo->inTransaction()) { |
|
268 | + if (!$this->pdo->inTransaction()) { |
|
269 | 269 | $this->transactionStart(); |
270 | 270 | try { |
271 | 271 | $result = call_user_func($callback, $this); |
@@ -273,7 +273,7 @@ discard block |
||
273 | 273 | $exception = $e; |
274 | 274 | } |
275 | 275 | $this->transactionRollback(); |
276 | - if($exception !== null) { |
|
276 | + if ($exception !== null) { |
|
277 | 277 | throw $exception; |
278 | 278 | } |
279 | 279 | } else { |
@@ -285,7 +285,7 @@ discard block |
||
285 | 285 | $exception = $e; |
286 | 286 | } |
287 | 287 | $this->exec("ROLLBACK TO {$uniqueId}"); |
288 | - if($exception !== null) { |
|
288 | + if ($exception !== null) { |
|
289 | 289 | throw $exception; |
290 | 290 | } |
291 | 291 | } |
@@ -300,15 +300,15 @@ discard block |
||
300 | 300 | * @throws null |
301 | 301 | */ |
302 | 302 | public function transaction($tries = 1, $callback = null) { |
303 | - if(is_callable($tries)) { |
|
303 | + if (is_callable($tries)) { |
|
304 | 304 | $callback = $tries; |
305 | 305 | $tries = 1; |
306 | - } elseif(!is_callable($callback)) { |
|
306 | + } elseif (!is_callable($callback)) { |
|
307 | 307 | throw new \Exception('$callback must be a callable'); |
308 | 308 | } |
309 | 309 | $e = null; |
310 | - if(!$this->pdo->inTransaction()) { |
|
311 | - for(; $tries--;) { |
|
310 | + if (!$this->pdo->inTransaction()) { |
|
311 | + for (; $tries--;) { |
|
312 | 312 | try { |
313 | 313 | $this->transactionStart(); |
314 | 314 | $result = call_user_func($callback, $this); |
@@ -339,11 +339,11 @@ discard block |
||
339 | 339 | */ |
340 | 340 | private function transactionEnd($fn) { |
341 | 341 | $this->transactionLevel--; |
342 | - if($this->transactionLevel < 0) { |
|
342 | + if ($this->transactionLevel < 0) { |
|
343 | 343 | throw new \Exception("Transaction-Nesting-Problem: Trying to invoke commit on a already closed transaction"); |
344 | 344 | } |
345 | - if((int) $this->transactionLevel === 0) { |
|
346 | - if($this->outerTransaction) { |
|
345 | + if ((int) $this->transactionLevel === 0) { |
|
346 | + if ($this->outerTransaction) { |
|
347 | 347 | $this->outerTransaction = false; |
348 | 348 | } else { |
349 | 349 | call_user_func($fn); |
@@ -360,7 +360,7 @@ discard block |
||
360 | 360 | */ |
361 | 361 | private function buildQueryStatement($query, $fn) { |
362 | 362 | $stmt = call_user_func($fn, $query); |
363 | - if(!$stmt) { |
|
363 | + if (!$stmt) { |
|
364 | 364 | throw new Exception("Could not execute statement:\n{$query}"); |
365 | 365 | } |
366 | 366 | $stmtWrapper = new QueryStatement($stmt, $query, $this->exceptionInterpreter, $this->queryLoggers); |
@@ -10,7 +10,7 @@ |
||
10 | 10 | */ |
11 | 11 | public static function getFieldTypes(QueryStatement $statement) { |
12 | 12 | $fieldTypes = array(); |
13 | - for($i = 0; $column = $statement->getColumnMeta($i); $i++) { |
|
13 | + for ($i = 0; $column = $statement->getColumnMeta($i); $i++) { |
|
14 | 14 | $fieldTypes[$column['name']] = self::getTypeFromNativeType($column['native_type']); |
15 | 15 | } |
16 | 16 | return $fieldTypes; |
@@ -16,8 +16,8 @@ |
||
16 | 16 | * @return $this |
17 | 17 | */ |
18 | 18 | public function having($expression) { |
19 | - if($expression instanceof OptionalExpression) { |
|
20 | - if($expression->isValid()) { |
|
19 | + if ($expression instanceof OptionalExpression) { |
|
20 | + if ($expression->isValid()) { |
|
21 | 21 | $this->having[] = [$expression->getExpression(), $expression->getData()]; |
22 | 22 | } |
23 | 23 | } else { |
@@ -16,8 +16,8 @@ |
||
16 | 16 | * @return $this |
17 | 17 | */ |
18 | 18 | public function having($expression) { |
19 | - if($expression instanceof OptionalExpression) { |
|
20 | - if($expression->isValid()) { |
|
19 | + if ($expression instanceof OptionalExpression) { |
|
20 | + if ($expression->isValid()) { |
|
21 | 21 | $this->having[] = [$expression->getExpression(), $expression->getData()]; |
22 | 22 | } |
23 | 23 | } else { |