Completed
Push — master ( 879aa0...367f78 )
by Ivan
12:12
created
src/driver/pdo/Statement.php 1 patch
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -26,7 +26,7 @@  discard block
 block discarded – undo
26 26
         if (isset($this->map)) {
27 27
             $par = [];
28 28
             foreach ($this->map as $key) {
29
-                $par[] = $data[$key] ?? throw new DBException('Missing param ' . $key);
29
+                $par[] = $data[$key] ?? throw new DBException('Missing param '.$key);
30 30
             }
31 31
             $data = $par;
32 32
         }
@@ -37,28 +37,28 @@  discard block
 block discarded – undo
37 37
             }
38 38
             switch (gettype($v)) {
39 39
                 case 'boolean':
40
-                    $this->statement->bindValue($i+1, $v, \PDO::PARAM_BOOL);
40
+                    $this->statement->bindValue($i + 1, $v, \PDO::PARAM_BOOL);
41 41
                     break;
42 42
                 case 'integer':
43
-                    $this->statement->bindValue($i+1, $v, \PDO::PARAM_INT);
43
+                    $this->statement->bindValue($i + 1, $v, \PDO::PARAM_INT);
44 44
                     break;
45 45
                 case 'NULL':
46
-                    $this->statement->bindValue($i+1, $v, \PDO::PARAM_NULL);
46
+                    $this->statement->bindValue($i + 1, $v, \PDO::PARAM_NULL);
47 47
                     break;
48 48
                 case 'double':
49
-                    $this->statement->bindValue($i+1, $v);
49
+                    $this->statement->bindValue($i + 1, $v);
50 50
                     break;
51 51
                 default:
52 52
                     // keep in mind oracle needs a transaction when inserting LOBs, aside from the specific syntax:
53 53
                     // INSERT INTO table (column, lobcolumn) VALUES (?, ?, EMPTY_BLOB()) RETURNING lobcolumn INTO ?
54 54
                     if (is_resource($v) && get_resource_type($v) === 'stream') {
55
-                        $this->statement->bindParam($i+1, $v, \PDO::PARAM_LOB);
55
+                        $this->statement->bindParam($i + 1, $v, \PDO::PARAM_LOB);
56 56
                         break;
57 57
                     }
58 58
                     if (!is_string($data[$i])) {
59 59
                         $data[$i] = serialize($data[$i]);
60 60
                     }
61
-                    $this->statement->bindValue($i+1, $v);
61
+                    $this->statement->bindValue($i + 1, $v);
62 62
                     break;
63 63
             }
64 64
         }
Please login to merge, or discard this patch.
src/schema/TableQuery.php 1 patch
Spacing   +275 added lines, -278 removed lines patch added patch discarded remove patch
@@ -22,7 +22,7 @@  discard block
 block discarded – undo
22 22
     protected array $order = [];
23 23
     protected array $group = [];
24 24
     protected array $having = [];
25
-    protected array $li_of = [0,0];
25
+    protected array $li_of = [0, 0];
26 26
     protected bool $li_mt = false;
27 27
     protected array $fields = [];
28 28
     protected array $withr = [];
@@ -39,11 +39,11 @@  discard block
 block discarded – undo
39 39
      * @param  Table|string   $table           the name or definition of the main table in the query
40 40
      * @param  bool           $findRelations   should the query builder try to find missing joins
41 41
      */
42
-    public function __construct(DBInterface $db, Table|string $table, bool $findRelations = false)
42
+    public function __construct(DBInterface $db, Table | string $table, bool $findRelations = false)
43 43
     {
44 44
         $this->db = $db;
45 45
         $this->findRelations = $findRelations;
46
-        $this->definition = $table instanceof Table ? $table : $this->db->definition((string)$table);
46
+        $this->definition = $table instanceof Table ? $table : $this->db->definition((string) $table);
47 47
         $primary = $this->definition->getPrimaryKey();
48 48
         $columns = $this->definition->getColumns();
49 49
         $this->pkey = count($primary) ? $primary : $columns;
@@ -67,27 +67,27 @@  discard block
 block discarded – undo
67 67
     {
68 68
         $column = explode('.', $column);
69 69
         if (count($column) === 1) {
70
-            $column = [ $this->definition->getFullName(), $column[0] ];
70
+            $column = [$this->definition->getFullName(), $column[0]];
71 71
             $col = $this->definition->getColumn($column[1]);
72 72
             if (!$col) {
73
-                throw new DBException('Invalid column name in main table: ' . $column[1]);
73
+                throw new DBException('Invalid column name in main table: '.$column[1]);
74 74
             }
75 75
         } elseif (count($column) === 2) {
76 76
             if ($column[0] === $this->definition->getName()) {
77 77
                 $col = $this->definition->getColumn($column[1]);
78 78
                 if (!$col) {
79
-                    throw new DBException('Invalid column name in main table: ' . $column[1]);
79
+                    throw new DBException('Invalid column name in main table: '.$column[1]);
80 80
                 }
81 81
             } else {
82 82
                 if ($this->definition->hasRelation($column[0])) {
83 83
                     $col = $this->definition->getRelation($column[0])?->table?->getColumn($column[1]);
84 84
                     if (!$col) {
85
-                        throw new DBException('Invalid column name in related table: ' . $column[1]);
85
+                        throw new DBException('Invalid column name in related table: '.$column[1]);
86 86
                     }
87 87
                 } elseif (isset($this->joins[$column[0]])) {
88 88
                     $col = $this->joins[$column[0]]->table->getColumn($column[1]);
89 89
                     if (!$col) {
90
-                        throw new DBException('Invalid column name in related table: ' . $column[1]);
90
+                        throw new DBException('Invalid column name in related table: '.$column[1]);
91 91
                     }
92 92
                 } else {
93 93
                     $col = null;
@@ -106,7 +106,7 @@  discard block
 block discarded – undo
106 106
                             $path = $this->db->findRelation($this->definition->getName(), $column[0]);
107 107
                         }
108 108
                         if (!count($path)) {
109
-                            throw new DBException('Invalid foreign table / column name: ' . implode(',', $column));
109
+                            throw new DBException('Invalid foreign table / column name: '.implode(',', $column));
110 110
                         }
111 111
                         unset($path[0]);
112 112
                         $this->with(implode('.', $path), false);
@@ -119,29 +119,29 @@  discard block
 block discarded – undo
119 119
             if ($this->definition->hasRelation(implode('.', $column))) {
120 120
                 $this->with(implode('.', $column), false);
121 121
                 $col = $this->definition->getRelation(implode('.', $column))?->table?->getColumn($name);
122
-                $column = [ implode('.', $column), $name ];
122
+                $column = [implode('.', $column), $name];
123 123
             } else {
124 124
                 $this->with(implode('.', $column), false);
125 125
                 $table = $this->definition;
126 126
                 $table = array_reduce(
127 127
                     $column,
128
-                    function ($carry, $item) use (&$table) {
128
+                    function($carry, $item) use (&$table) {
129 129
                         $table = $table->getRelation($item)->table;
130 130
                         return $table;
131 131
                     }
132 132
                 );
133 133
                 $col = $table->getColumn($name);
134
-                $column = [ implode(static::SEP, $column), $name ];
134
+                $column = [implode(static::SEP, $column), $name];
135 135
             }
136 136
         }
137
-        return [ 'name' => implode('.', $column), 'data' => $col ];
137
+        return ['name' => implode('.', $column), 'data' => $col];
138 138
     }
139 139
     protected function normalizeValue(TableColumn $col, mixed $value): mixed
140 140
     {
141 141
         if ($value instanceof \BackedEnum) {
142 142
             $value = $value->value;
143 143
         }
144
-        $strict = (int)$this->db->driverOption('strict', 0) > 0;
144
+        $strict = (int) $this->db->driverOption('strict', 0) > 0;
145 145
         if ($value === null && $col->isNullable()) {
146 146
             return null;
147 147
         }
@@ -151,7 +151,7 @@  discard block
 block discarded – undo
151 151
                     $temp = strtotime($value);
152 152
                     if (!$temp) {
153 153
                         if ($strict) {
154
-                            throw new DBException('Invalid value for date column: ' . $col->getName());
154
+                            throw new DBException('Invalid value for date column: '.$col->getName());
155 155
                         }
156 156
                         return null;
157 157
                     }
@@ -164,7 +164,7 @@  discard block
 block discarded – undo
164 164
                     return $value->format('Y-m-d');
165 165
                 }
166 166
                 if ($strict) {
167
-                    throw new DBException('Invalid value (unknown data type) for date column: ' . $col->getName());
167
+                    throw new DBException('Invalid value (unknown data type) for date column: '.$col->getName());
168 168
                 }
169 169
                 return $value;
170 170
             case 'datetime':
@@ -172,7 +172,7 @@  discard block
 block discarded – undo
172 172
                     $temp = strtotime($value);
173 173
                     if (!$temp) {
174 174
                         if ($strict) {
175
-                            throw new DBException('Invalid value for datetime column: ' . $col->getName());
175
+                            throw new DBException('Invalid value for datetime column: '.$col->getName());
176 176
                         }
177 177
                         return null;
178 178
                     }
@@ -185,7 +185,7 @@  discard block
 block discarded – undo
185 185
                     return $value->format('Y-m-d H:i:s');
186 186
                 }
187 187
                 if ($strict) {
188
-                    throw new DBException('Invalid value (unknown data type) for datetime column ' . $col->getName());
188
+                    throw new DBException('Invalid value (unknown data type) for datetime column '.$col->getName());
189 189
                 }
190 190
                 return $value;
191 191
             case 'enum':
@@ -193,7 +193,7 @@  discard block
 block discarded – undo
193 193
                 if (is_int($value)) {
194 194
                     if (!isset($values[$value])) {
195 195
                         if ($strict) {
196
-                            throw new DBException('Invalid value (using integer) for enum: ' . $col->getName());
196
+                            throw new DBException('Invalid value (using integer) for enum: '.$col->getName());
197 197
                         }
198 198
                         return $value;
199 199
                     }
@@ -201,29 +201,29 @@  discard block
 block discarded – undo
201 201
                 }
202 202
                 if (!in_array($value, $col->getValues())) {
203 203
                     if ($strict) {
204
-                        throw new DBException('Invalid value for enum: ' . $col->getName());
204
+                        throw new DBException('Invalid value for enum: '.$col->getName());
205 205
                     }
206 206
                     return 0;
207 207
                 }
208 208
                 return $value;
209 209
             case 'int':
210
-                $temp = preg_replace('([^+\-0-9]+)', '', (string)$value);
211
-                return is_string($temp) ? (int)$temp : 0;
210
+                $temp = preg_replace('([^+\-0-9]+)', '', (string) $value);
211
+                return is_string($temp) ? (int) $temp : 0;
212 212
             case 'float':
213
-                $temp = preg_replace('([^+\-0-9.]+)', '', str_replace(',', '.', (string)$value));
214
-                return is_string($temp) ? (float)$temp : 0;
213
+                $temp = preg_replace('([^+\-0-9.]+)', '', str_replace(',', '.', (string) $value));
214
+                return is_string($temp) ? (float) $temp : 0;
215 215
             case 'text':
216 216
                 if (!is_scalar($value)) {
217 217
                     $value = json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
218 218
                 }
219 219
                 if (!is_string($value)) {
220
-                    $value = (string)$value;
220
+                    $value = (string) $value;
221 221
                 }
222 222
                 // check using strlen first, in order to avoid hitting mb_ functions which might be polyfilled
223 223
                 // because the polyfill is quite slow
224 224
                 if ($col->hasLength() && strlen($value) > $col->getLength() && mb_strlen($value) > $col->getLength()) {
225 225
                     if ($strict) {
226
-                        throw new DBException('Invalid value for text column: ' . $col->getName());
226
+                        throw new DBException('Invalid value for text column: '.$col->getName());
227 227
                     }
228 228
                     return mb_substr($value, 0, $col->getLength());
229 229
                 }
@@ -256,11 +256,11 @@  discard block
 block discarded – undo
256 256
                     $sqls[] = $temp[0];
257 257
                     $pars = array_merge($pars, $temp[1]);
258 258
                     unset($value[$k]);
259
-                } elseif (in_array($k, ['like','ilike','contains','icontains','ends','iends'])) {
259
+                } elseif (in_array($k, ['like', 'ilike', 'contains', 'icontains', 'ends', 'iends'])) {
260 260
                     if ($column->getBasicType() !== 'text') {
261 261
                         switch ($this->db->driverName()) {
262 262
                             case 'oracle':
263
-                                $name = 'CAST(' . $name . ' AS NVARCHAR(500))';
263
+                                $name = 'CAST('.$name.' AS NVARCHAR(500))';
264 264
                                 break;
265 265
                             case 'postgre':
266 266
                                 $name = $name.'::text';
@@ -275,25 +275,25 @@  discard block
 block discarded – undo
275 275
                     $sql = [];
276 276
                     $par = [];
277 277
                     foreach ($values as $v) {
278
-                        $v = str_replace(['%', '_'], ['\\%','\\_'], $v) . '%';
278
+                        $v = str_replace(['%', '_'], ['\\%', '\\_'], $v).'%';
279 279
                         if ($mode === 'contains' || $mode === 'icontains') {
280
-                            $v = '%' . $v;
280
+                            $v = '%'.$v;
281 281
                         }
282 282
                         if ($mode === 'ends' || $mode === 'iends') {
283
-                            $v = '%' . rtrim($v, '%');
283
+                            $v = '%'.rtrim($v, '%');
284 284
                         }
285 285
                         if ($mode === 'icontains' || $mode === 'ilike' || $mode === 'iends') {
286 286
                             $v = mb_strtoupper($v);
287
-                            $name = 'UPPER(' . $name . ')';
287
+                            $name = 'UPPER('.$name.')';
288 288
                         }
289
-                        $sql[] = $negate ? $name . ' NOT LIKE ?' : $name . ' LIKE ?';
289
+                        $sql[] = $negate ? $name.' NOT LIKE ?' : $name.' LIKE ?';
290 290
                         $par[] = $v;
291 291
                     }
292 292
                     if ($negate) {
293
-                        $sqls[] = '(' . implode(' AND ', $sql) . ')';
293
+                        $sqls[] = '('.implode(' AND ', $sql).')';
294 294
                         $pars = array_merge($pars, $par);
295 295
                     } else {
296
-                        $sqls[] = '(' . implode(' OR ', $sql) . ')';
296
+                        $sqls[] = '('.implode(' OR ', $sql).')';
297 297
                         $pars = array_merge($pars, $par);
298 298
                     }
299 299
                     unset($value[$k]);
@@ -301,38 +301,38 @@  discard block
 block discarded – undo
301 301
             }
302 302
             if (!count($value)) {
303 303
                 return [
304
-                    '(' . implode(' AND ', $sqls) . ')',
304
+                    '('.implode(' AND ', $sqls).')',
305 305
                     $pars
306 306
                 ];
307 307
             }
308 308
         }
309 309
         if (is_null($value)) {
310
-            $sqls[] = $negate ? $name . ' IS NOT NULL' : $name . ' IS NULL';
310
+            $sqls[] = $negate ? $name.' IS NOT NULL' : $name.' IS NULL';
311 311
             return [
312
-                '(' . implode(' AND ', $sqls) . ')',
312
+                '('.implode(' AND ', $sqls).')',
313 313
                 $pars
314 314
             ];
315 315
         }
316 316
         if (!is_array($value)) {
317
-            $sqls[] = $negate ? $name . ' <> ?' : $name . ' = ?';
317
+            $sqls[] = $negate ? $name.' <> ?' : $name.' = ?';
318 318
             $pars[] = $this->normalizeValue($column, $value);
319 319
             return [
320
-                '(' . implode(' AND ', $sqls) . ')',
320
+                '('.implode(' AND ', $sqls).')',
321 321
                 $pars
322 322
             ];
323 323
         }
324 324
         if (isset($value['beg']) && strlen($value['beg']) && (!isset($value['end']) || !strlen($value['end']))) {
325
-            $value = [ 'gte' => $value['beg'] ];
325
+            $value = ['gte' => $value['beg']];
326 326
         }
327 327
         if (isset($value['end']) && strlen($value['end']) && (!isset($value['beg']) || !strlen($value['beg']))) {
328
-            $value = [ 'lte' => $value['end'] ];
328
+            $value = ['lte' => $value['end']];
329 329
         }
330 330
         if (isset($value['beg']) && isset($value['end'])) {
331 331
             $sqls[] = $negate ? $name.' NOT BETWEEN ? AND ?' : $name.' BETWEEN ? AND ?';
332 332
             $pars[] = $this->normalizeValue($column, $value['beg']);
333 333
             $pars[] = $this->normalizeValue($column, $value['end']);
334 334
             return [
335
-                '(' . implode(' AND ', $sqls) . ')',
335
+                '('.implode(' AND ', $sqls).')',
336 336
                 $pars
337 337
             ];
338 338
         }
@@ -340,51 +340,51 @@  discard block
 block discarded – undo
340 340
             $sql = [];
341 341
             $par = [];
342 342
             if (isset($value['gt'])) {
343
-                $sql[] = $name. ' ' . ($negate ? '<=' : '>') . ' ?';
343
+                $sql[] = $name.' '.($negate ? '<=' : '>').' ?';
344 344
                 $par[] = $this->normalizeValue($column, $value['gt']);
345 345
             }
346 346
             if (isset($value['gte'])) {
347
-                $sql[] = $name. ' ' . ($negate ? '<' : '>=') . ' ?';
347
+                $sql[] = $name.' '.($negate ? '<' : '>=').' ?';
348 348
                 $par[] = $this->normalizeValue($column, $value['gte']);
349 349
             }
350 350
             if (isset($value['lt'])) {
351
-                $sql[] = $name. ' ' . ($negate ? '>=' : '<') . ' ?';
351
+                $sql[] = $name.' '.($negate ? '>=' : '<').' ?';
352 352
                 $par[] = $this->normalizeValue($column, $value['lt']);
353 353
             }
354 354
             if (isset($value['lte'])) {
355
-                $sql[] = $name. ' ' . ($negate ? '>' : '<=') . ' ?';
355
+                $sql[] = $name.' '.($negate ? '>' : '<=').' ?';
356 356
                 $par[] = $this->normalizeValue($column, $value['lte']);
357 357
             }
358
-            $sqls[] = '(' . implode(' AND ', $sql) . ')';
358
+            $sqls[] = '('.implode(' AND ', $sql).')';
359 359
             $pars = array_merge($pars, $par);
360 360
             return [
361
-                '(' . implode(' AND ', $sqls) . ')',
361
+                '('.implode(' AND ', $sqls).')',
362 362
                 $pars
363 363
             ];
364 364
         }
365 365
 
366
-        $value = array_values(array_map(function ($v) use ($column) {
366
+        $value = array_values(array_map(function($v) use ($column) {
367 367
             return $this->normalizeValue($column, $v);
368 368
         }, $value));
369 369
         if ($this->db->driverName() === 'oracle') {
370 370
             $sql = [];
371 371
             $par = [];
372 372
             for ($i = 0; $i < count($value); $i += 500) {
373
-                $sql[] = $negate ? $name . ' NOT IN (??)' : $name . ' IN (??)';
373
+                $sql[] = $negate ? $name.' NOT IN (??)' : $name.' IN (??)';
374 374
                 $par[] = array_slice($value, $i, 500);
375 375
             }
376
-            $sql = '(' . implode($negate ? ' AND ' : ' OR ', $sql) . ')';
376
+            $sql = '('.implode($negate ? ' AND ' : ' OR ', $sql).')';
377 377
             $sqls[] = $sql;
378 378
             $pars = array_merge($pars, $par);
379 379
             return [
380
-                '(' . implode(' AND ', $sqls) . ')',
380
+                '('.implode(' AND ', $sqls).')',
381 381
                 $pars
382 382
             ];
383 383
         }
384
-        $sqls[] = $negate ? $name . ' NOT IN (??)' : $name . ' IN (??)';
384
+        $sqls[] = $negate ? $name.' NOT IN (??)' : $name.' IN (??)';
385 385
         $pars[] = $value;
386 386
         return [
387
-            '(' . implode(' AND ', $sqls) . ')',
387
+            '('.implode(' AND ', $sqls).')',
388 388
             $pars
389 389
         ];
390 390
     }
@@ -416,7 +416,7 @@  discard block
 block discarded – undo
416 416
                 $par = array_merge($par, $temp[1]);
417 417
             }
418 418
         }
419
-        return $this->where('(' . implode(' OR ', $sql) . ')', $par);
419
+        return $this->where('('.implode(' OR ', $sql).')', $par);
420 420
     }
421 421
     /**
422 422
      * Filter the results matching all of the criteria
@@ -434,7 +434,7 @@  discard block
 block discarded – undo
434 434
                 $par = array_merge($par, $temp[1]);
435 435
             }
436 436
         }
437
-        return $this->where('(' . implode(' AND ', $sql) . ')', $par);
437
+        return $this->where('('.implode(' AND ', $sql).')', $par);
438 438
     }
439 439
     /**
440 440
      * Sort by a column
@@ -447,9 +447,9 @@  discard block
 block discarded – undo
447 447
         try {
448 448
             $this->getColumn($column);
449 449
         } catch (DBException $e) {
450
-            throw new DBException('Invalid sort column: ' . $column);
450
+            throw new DBException('Invalid sort column: '.$column);
451 451
         }
452
-        return $this->order($column . ' ' . ($desc ? 'DESC' : 'ASC'));
452
+        return $this->order($column.' '.($desc ? 'DESC' : 'ASC'));
453 453
     }
454 454
     /**
455 455
      * Group by a column (or columns)
@@ -459,7 +459,7 @@  discard block
 block discarded – undo
459 459
     public function group($column) : static
460 460
     {
461 461
         if (!is_array($column)) {
462
-            $column = [ $column ];
462
+            $column = [$column];
463 463
         }
464 464
         foreach ($column as $k => $v) {
465 465
             $column[$k] = $this->getColumn($v)['name'];
@@ -502,7 +502,7 @@  discard block
 block discarded – undo
502 502
         $this->order = [];
503 503
         $this->having = [];
504 504
         $this->aliases = [];
505
-        $this->li_of = [0,0];
505
+        $this->li_of = [0, 0];
506 506
         $this->li_mt = false;
507 507
         $this->qiterator = null;
508 508
         return $this;
@@ -516,7 +516,7 @@  discard block
 block discarded – undo
516 516
     public function groupBy(string $sql, array $params = []) : static
517 517
     {
518 518
         $this->qiterator = null;
519
-        $this->group = [ $sql, $params ];
519
+        $this->group = [$sql, $params];
520 520
         return $this;
521 521
     }
522 522
     /**
@@ -530,7 +530,7 @@  discard block
 block discarded – undo
530 530
     public function join($table, array $fields, ?string $name = null, bool $multiple = true)
531 531
     {
532 532
         $this->qiterator = null;
533
-        $table = $table instanceof Table ? $table : $this->db->definition((string)$table);
533
+        $table = $table instanceof Table ? $table : $this->db->definition((string) $table);
534 534
         $name = $name ?? $table->getName();
535 535
         if (isset($this->joins[$name]) || $this->definition->hasRelation($name)) {
536 536
             throw new DBException('Alias / table name already in use');
@@ -539,7 +539,7 @@  discard block
 block discarded – undo
539 539
         foreach ($fields as $k => $v) {
540 540
             $k = explode('.', $k, 2);
541 541
             $k = count($k) == 2 ? $k[1] : $k[0];
542
-            $this->joins[$name]->keymap[$this->getColumn($name . '.' . $k)['name']] = $this->getColumn($v)['name'];
542
+            $this->joins[$name]->keymap[$this->getColumn($name.'.'.$k)['name']] = $this->getColumn($v)['name'];
543 543
         }
544 544
         return $this;
545 545
     }
@@ -552,7 +552,7 @@  discard block
 block discarded – undo
552 552
     public function where(string $sql, array $params = []) : static
553 553
     {
554 554
         $this->qiterator = null;
555
-        $this->where[] = [ $sql, $params ];
555
+        $this->where[] = [$sql, $params];
556 556
         return $this;
557 557
     }
558 558
     /**
@@ -564,7 +564,7 @@  discard block
 block discarded – undo
564 564
     public function having(string $sql, array $params = []) : static
565 565
     {
566 566
         $this->qiterator = null;
567
-        $this->having[] = [ $sql, $params ];
567
+        $this->having[] = [$sql, $params];
568 568
         return $this;
569 569
     }
570 570
     /**
@@ -584,12 +584,12 @@  discard block
 block discarded – undo
584 584
                     throw new \Exception();
585 585
                 }
586 586
                 $name = $this->getColumn(trim($name))['name'];
587
-                $sql = $name . ' ' . (strpos(strtolower($sql), ' desc') ? 'DESC' : 'ASC');
587
+                $sql = $name.' '.(strpos(strtolower($sql), ' desc') ? 'DESC' : 'ASC');
588 588
             } catch (\Exception $e) {
589 589
                 $name = null;
590 590
             }
591 591
         }
592
-        $this->order = [ $sql, $params, $name ];
592
+        $this->order = [$sql, $params, $name];
593 593
         return $this;
594 594
     }
595 595
     /**
@@ -601,7 +601,7 @@  discard block
 block discarded – undo
601 601
     public function limit(int $limit, int $offset = 0, ?bool $limitOnMainTable = null) : static
602 602
     {
603 603
         $this->qiterator = null;
604
-        $this->li_of = [ $limit, $offset ];
604
+        $this->li_of = [$limit, $offset];
605 605
         if (isset($limitOnMainTable)) {
606 606
             $this->li_mt = $limitOnMainTable;
607 607
         }
@@ -620,9 +620,9 @@  discard block
 block discarded – undo
620 620
     {
621 621
         $aliases = [];
622 622
         $aliases_ext = [];
623
-        $getAlias = function ($name) use (&$aliases, &$aliases_ext) {
623
+        $getAlias = function($name) use (&$aliases, &$aliases_ext) {
624 624
             // to bypass use: return $name;
625
-            $aliases[$name] = $aliases[$name] ?? 'alias' . static::SEP . count($aliases);
625
+            $aliases[$name] = $aliases[$name] ?? 'alias'.static::SEP.count($aliases);
626 626
             if (isset($aliases_ext[$name])) {
627 627
                 unset($aliases_ext[$name]);
628 628
             }
@@ -645,7 +645,7 @@  discard block
 block discarded – undo
645 645
         $h = $this->having;
646 646
         $o = $this->order;
647 647
         $g = $this->group;
648
-        $j = array_map(function ($v) {
648
+        $j = array_map(function($v) {
649 649
             return clone $v;
650 650
         }, $this->joins);
651 651
 
@@ -655,28 +655,28 @@  discard block
 block discarded – undo
655 655
                 continue;
656 656
             }
657 657
             foreach ($w as $kk => $v) {
658
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
658
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
659 659
                     $used_relations[] = $k;
660
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
660
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
661 661
                 }
662 662
             }
663 663
             foreach ($h as $kk => $v) {
664
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
664
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
665 665
                     $used_relations[] = $k;
666
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
666
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
667 667
                 }
668 668
             }
669
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
669
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
670 670
                 $used_relations[] = $k;
671
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
671
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
672 672
             }
673 673
             foreach ($j as $kk => $v) {
674 674
                 foreach ($v->keymap as $kkk => $vv) {
675
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
675
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
676 676
                         $used_relations[] = $k;
677 677
                         $j[$kk]->keymap[$kkk] = preg_replace(
678
-                            '(\b'.preg_quote($k . '.'). ')i',
679
-                            $getAlias($k) . '.',
678
+                            '(\b'.preg_quote($k.'.').')i',
679
+                            $getAlias($k).'.',
680 680
                             $vv
681 681
                         );
682 682
                     }
@@ -685,65 +685,65 @@  discard block
 block discarded – undo
685 685
         }
686 686
         foreach ($this->definition->getRelations() as $k => $v) {
687 687
             foreach ($w as $kk => $vv) {
688
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
689
-                    $relations[$k] = [ $v, $table ];
688
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
689
+                    $relations[$k] = [$v, $table];
690 690
                     $used_relations[] = $k;
691
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
691
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
692 692
                 }
693 693
             }
694
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
695
-                $relations[$k] = [ $v, $table ];
694
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
695
+                $relations[$k] = [$v, $table];
696 696
             }
697 697
             foreach ($h as $kk => $vv) {
698
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
699
-                    $relations[$k] = [ $v, $table ];
698
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
699
+                    $relations[$k] = [$v, $table];
700 700
                     $used_relations[] = $k;
701
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
701
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
702 702
                 }
703 703
             }
704
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
705
-                $relations[$k] = [ $v, $table ];
704
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
705
+                $relations[$k] = [$v, $table];
706 706
                 $used_relations[] = $k;
707
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
707
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
708 708
             }
709 709
             foreach ($j as $kk => $vv) {
710 710
                 foreach ($vv->keymap as $kkk => $vvv) {
711
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vvv)) {
712
-                        $relations[$k] = [ $v, $table ];
711
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vvv)) {
712
+                        $relations[$k] = [$v, $table];
713 713
                         $used_relations[] = $k;
714 714
                         $j[$kk]->keymap[$kkk] =
715
-                            preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vvv);
715
+                            preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vvv);
716 716
                     }
717 717
                 }
718 718
             }
719 719
         }
720 720
         foreach ($aliases_ext as $k => $alias) {
721 721
             foreach ($w as $kk => $v) {
722
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
723
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
722
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
723
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
724 724
                     $used_relations[] = $k;
725 725
                 }
726 726
             }
727 727
             foreach ($h as $kk => $v) {
728
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
729
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
728
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
729
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
730 730
                     $used_relations[] = $k;
731 731
                 }
732 732
             }
733
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
733
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
734 734
                 $used_relations[] = $k;
735 735
             }
736
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
737
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $g[0]);
736
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
737
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $g[0]);
738 738
                 $used_relations[] = $k;
739 739
             }
740 740
             foreach ($j as $kk => $v) {
741 741
                 foreach ($v->keymap as $kkk => $vv) {
742
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
742
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
743 743
                         $used_relations[] = $k;
744 744
                         $j[$kk]->keymap[$kkk] = preg_replace(
745
-                            '(\b'.preg_quote($k . '.'). ')i',
746
-                            $alias . '.',
745
+                            '(\b'.preg_quote($k.'.').')i',
746
+                            $alias.'.',
747 747
                             $vv
748 748
                         );
749 749
                     }
@@ -762,13 +762,13 @@  discard block
 block discarded – undo
762 762
                     foreach ($v->keymap as $kk => $vv) {
763 763
                         $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
764 764
                     }
765
-                    $sql .= implode(' AND ', $tmp) . ' ';
765
+                    $sql .= implode(' AND ', $tmp).' ';
766 766
                     $sql .= 'LEFT JOIN '.$v->table->getFullName().' '.$getAlias($k).' ON ';
767 767
                     $tmp = [];
768 768
                     foreach ($v->pivot_keymap as $kk => $vv) {
769 769
                         $tmp[] = $getAlias($k).'.'.$vv.' = '.$alias.'.'.$kk.' ';
770 770
                     }
771
-                    $sql .= implode(' AND ', $tmp) . ' ';
771
+                    $sql .= implode(' AND ', $tmp).' ';
772 772
                 } else {
773 773
                     $alias = $getAlias($k);
774 774
                     $sql .= 'LEFT JOIN '.$v->table->getFullName().' '.$alias.' ON ';
@@ -777,10 +777,10 @@  discard block
 block discarded – undo
777 777
                         $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
778 778
                     }
779 779
                     if ($v->sql) {
780
-                        $tmp[] = $v->sql . ' ';
780
+                        $tmp[] = $v->sql.' ';
781 781
                         $par = array_merge($par, $v->par ?? []);
782 782
                     }
783
-                    $sql .= implode(' AND ', $tmp) . ' ';
783
+                    $sql .= implode(' AND ', $tmp).' ';
784 784
                 }
785 785
             }
786 786
         }
@@ -789,12 +789,12 @@  discard block
 block discarded – undo
789 789
             if ($v->many) {
790 790
                 $jMany = true;
791 791
             }
792
-            $sql .= ($v->many ? 'LEFT ' : '' ) . 'JOIN '.$v->table->getFullName().' '.$k.' ON ';
792
+            $sql .= ($v->many ? 'LEFT ' : '').'JOIN '.$v->table->getFullName().' '.$k.' ON ';
793 793
             $tmp = [];
794 794
             foreach ($v->keymap as $kk => $vv) {
795 795
                 $tmp[] = $kk.' = '.$vv;
796 796
             }
797
-            $sql .= implode(' AND ', $tmp) . ' ';
797
+            $sql .= implode(' AND ', $tmp).' ';
798 798
         }
799 799
         if (!$jMany && !count($used_relations)) {
800 800
             $sql = str_replace('COUNT(DISTINCT ', 'COUNT(', $sql);
@@ -803,20 +803,20 @@  discard block
 block discarded – undo
803 803
             $sql .= 'WHERE ';
804 804
             $tmp = [];
805 805
             foreach ($w as $v) {
806
-                $tmp[] = '(' . $v[0] . ')';
806
+                $tmp[] = '('.$v[0].')';
807 807
                 $par = array_merge($par, $v[1]);
808 808
             }
809 809
             $sql .= implode(' AND ', $tmp).' ';
810 810
         }
811 811
         if (count($g)) {
812
-            $sql .= 'GROUP BY ' . $g[0] . ' ';
812
+            $sql .= 'GROUP BY '.$g[0].' ';
813 813
             $par = array_merge($par, $g[1]);
814 814
         }
815 815
         if (count($h)) {
816 816
             $sql .= 'HAVING ';
817 817
             $tmp = [];
818 818
             foreach ($h as $v) {
819
-                $tmp[] = '(' . $v[0] . ')';
819
+                $tmp[] = '('.$v[0].')';
820 820
                 $par = array_merge($par, $v[1]);
821 821
             }
822 822
             $sql .= implode(' AND ', $tmp).' ';
@@ -846,14 +846,14 @@  discard block
 block discarded – undo
846 846
                     } elseif (isset($this->joins[$table])) {
847 847
                         $cols = $this->joins[$table]->table->getColumns();
848 848
                     } else {
849
-                        throw new DBException('Invalid foreign table name: ' . $table);
849
+                        throw new DBException('Invalid foreign table name: '.$table);
850 850
                     }
851 851
                 } else {
852 852
                     array_pop($temp);
853 853
                     $this->with(implode('.', $temp));
854 854
                     $table = array_reduce(
855 855
                         $temp,
856
-                        function ($carry, $item) use (&$table) {
856
+                        function($carry, $item) use (&$table) {
857 857
                             return $table->getRelation($item)->table;
858 858
                         }
859 859
                     );
@@ -862,7 +862,7 @@  discard block
 block discarded – undo
862 862
                 }
863 863
                 unset($fields[$k]);
864 864
                 foreach ($cols as $col) {
865
-                    $fields[] = $table . '.' . $col;
865
+                    $fields[] = $table.'.'.$col;
866 866
                 }
867 867
             }
868 868
         }
@@ -896,11 +896,11 @@  discard block
 block discarded – undo
896 896
             if ($relation[2]) {
897 897
                 if (!$this->manualColumns) {
898 898
                     foreach ($relation[0]->table->getColumns() as $column) {
899
-                        $f[] = $name . '.' . $column;
899
+                        $f[] = $name.'.'.$column;
900 900
                     }
901 901
                 } else {
902 902
                     foreach ($relation[0]->table->getPrimaryKey() as $column) {
903
-                        $f[] = $name . '.' . $column;
903
+                        $f[] = $name.'.'.$column;
904 904
                     }
905 905
                 }
906 906
             }
@@ -920,11 +920,11 @@  discard block
 block discarded – undo
920 920
                 continue;
921 921
             }
922 922
             if (count($temp) === 2 && $this->definition->hasRelation($temp[0]) && $this->definition->getRelation($temp[0])?->table->getColumn($temp[1])) {
923
-                $r[] = $temp[0] . '.' . $temp[1];
923
+                $r[] = $temp[0].'.'.$temp[1];
924 924
                 continue;
925 925
             }
926 926
             if (count($temp) === 3 && $temp[0] === $this->definition->getSchema() && $this->definition->hasRelation($temp[1])) {
927
-                $r[] = $temp[1] . '.' . $temp[2];
927
+                $r[] = $temp[1].'.'.$temp[2];
928 928
                 continue;
929 929
             }
930 930
         }
@@ -943,9 +943,9 @@  discard block
 block discarded – undo
943 943
         }
944 944
         $aliases = [];
945 945
         $aliases_ext = [];
946
-        $getAlias = function ($name) use (&$aliases, &$aliases_ext) {
946
+        $getAlias = function($name) use (&$aliases, &$aliases_ext) {
947 947
             // to bypass use: return $name;
948
-            $aliases[$name] = $aliases[$name] ?? 'alias' . static::SEP . count($aliases);
948
+            $aliases[$name] = $aliases[$name] ?? 'alias'.static::SEP.count($aliases);
949 949
             if (isset($aliases_ext[$name])) {
950 950
                 unset($aliases_ext[$name]);
951 951
             }
@@ -970,7 +970,7 @@  discard block
 block discarded – undo
970 970
         $h = $this->having;
971 971
         $o = $this->order;
972 972
         $g = $this->group;
973
-        $j = array_map(function ($v) {
973
+        $j = array_map(function($v) {
974 974
             return clone $v;
975 975
         }, $this->joins);
976 976
 
@@ -985,11 +985,10 @@  discard block
 block discarded – undo
985 985
             }
986 986
             $temp = [];
987 987
             foreach ($f as $kk => $field) {
988
-                if (strpos($field, $k . '.') === 0) {
989
-                    $f[$kk] = str_replace($k . '.', $getAlias($k) . '.', $field);
988
+                if (strpos($field, $k.'.') === 0) {
989
+                    $f[$kk] = str_replace($k.'.', $getAlias($k).'.', $field);
990 990
                     $nk = $this->aliasColumns && is_numeric($kk) ?
991
-                        $getAlias($k . static::SEP . str_replace($k . '.', '', $field)) :
992
-                        $kk;
991
+                        $getAlias($k.static::SEP.str_replace($k.'.', '', $field)) : $kk;
993 992
                     $temp[$nk] = $f[$kk];
994 993
                 } else {
995 994
                     $temp[$kk] = $field;
@@ -997,27 +996,27 @@  discard block
 block discarded – undo
997 996
             }
998 997
             $f = $temp;
999 998
             foreach ($w as $kk => $v) {
1000
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1001
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
999
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1000
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
1002 1001
                 }
1003 1002
             }
1004 1003
             foreach ($h as $kk => $v) {
1005
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1006
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
1004
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1005
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
1007 1006
                 }
1008 1007
             }
1009
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
1010
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
1008
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
1009
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
1011 1010
             }
1012
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
1013
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
1011
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
1012
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
1014 1013
             }
1015 1014
             foreach ($j as $kk => $v) {
1016 1015
                 foreach ($v->keymap as $kkk => $vv) {
1017
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
1016
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
1018 1017
                         $j[$kk]->keymap[$kkk] = preg_replace(
1019
-                            '(\b'.preg_quote($k . '.'). ')i',
1020
-                            $getAlias($k) . '.',
1018
+                            '(\b'.preg_quote($k.'.').')i',
1019
+                            $getAlias($k).'.',
1021 1020
                             $vv
1022 1021
                         );
1023 1022
                     }
@@ -1027,12 +1026,11 @@  discard block
 block discarded – undo
1027 1026
         foreach ($this->definition->getRelations() as $k => $relation) {
1028 1027
             $temp = [];
1029 1028
             foreach ($f as $kk => $field) {
1030
-                if (strpos($field, $k . '.') === 0) {
1031
-                    $relations[$k] = [ $relation, $table ];
1032
-                    $f[$kk] = str_replace($k . '.', $getAlias($k) . '.', $field);
1029
+                if (strpos($field, $k.'.') === 0) {
1030
+                    $relations[$k] = [$relation, $table];
1031
+                    $f[$kk] = str_replace($k.'.', $getAlias($k).'.', $field);
1033 1032
                     $nk = $this->aliasColumns && is_numeric($kk) ?
1034
-                        $getAlias($k . static::SEP . str_replace($k . '.', '', $field)) :
1035
-                        $kk;
1033
+                        $getAlias($k.static::SEP.str_replace($k.'.', '', $field)) : $kk;
1036 1034
                     $temp[$nk] = $f[$kk];
1037 1035
                 } else {
1038 1036
                     $temp[$kk] = $field;
@@ -1040,32 +1038,32 @@  discard block
 block discarded – undo
1040 1038
             }
1041 1039
             $f = $temp;
1042 1040
             foreach ($w as $kk => $v) {
1043
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1044
-                    $relations[$k] = [ $relation, $table ];
1045
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
1041
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1042
+                    $relations[$k] = [$relation, $table];
1043
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
1046 1044
                 }
1047 1045
             }
1048 1046
             foreach ($h as $kk => $v) {
1049
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1050
-                    $relations[$k] = [ $relation, $table ];
1051
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
1047
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1048
+                    $relations[$k] = [$relation, $table];
1049
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
1052 1050
                 }
1053 1051
             }
1054
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
1055
-                $relations[$k] = [ $relation, $table ];
1056
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
1052
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
1053
+                $relations[$k] = [$relation, $table];
1054
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
1057 1055
             }
1058
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
1059
-                $relations[$k] = [ $relation, $table ];
1060
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
1056
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
1057
+                $relations[$k] = [$relation, $table];
1058
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
1061 1059
             }
1062 1060
             foreach ($j as $kk => $v) {
1063 1061
                 foreach ($v->keymap as $kkk => $vv) {
1064
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
1065
-                        $relations[$k] = [ $relation, $table ];
1062
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
1063
+                        $relations[$k] = [$relation, $table];
1066 1064
                         $j[$kk]->keymap[$kkk] = preg_replace(
1067
-                            '(\b'.preg_quote($k . '.'). ')i',
1068
-                            $getAlias($k) . '.',
1065
+                            '(\b'.preg_quote($k.'.').')i',
1066
+                            $getAlias($k).'.',
1069 1067
                             $vv
1070 1068
                         );
1071 1069
                     }
@@ -1075,11 +1073,10 @@  discard block
 block discarded – undo
1075 1073
         foreach ($aliases_ext as $k => $alias) {
1076 1074
             $temp = [];
1077 1075
             foreach ($f as $kk => $field) {
1078
-                if (strpos($field, $k . '.') === 0) {
1079
-                    $f[$kk] = str_replace($k . '.', $alias . '.', $field);
1076
+                if (strpos($field, $k.'.') === 0) {
1077
+                    $f[$kk] = str_replace($k.'.', $alias.'.', $field);
1080 1078
                     $nk = $this->aliasColumns && is_numeric($kk) ?
1081
-                        $getAlias($k . static::SEP . str_replace($k . '.', '', $field)) :
1082
-                        $kk;
1079
+                        $getAlias($k.static::SEP.str_replace($k.'.', '', $field)) : $kk;
1083 1080
                     $temp[$nk] = $f[$kk];
1084 1081
                 } else {
1085 1082
                     $temp[$kk] = $field;
@@ -1087,27 +1084,27 @@  discard block
 block discarded – undo
1087 1084
             }
1088 1085
             $f = $temp;
1089 1086
             foreach ($w as $kk => $v) {
1090
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1091
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
1087
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1088
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
1092 1089
                 }
1093 1090
             }
1094 1091
             foreach ($h as $kk => $v) {
1095
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1096
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
1092
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1093
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
1097 1094
                 }
1098 1095
             }
1099
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
1100
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $o[0]);
1096
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
1097
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $o[0]);
1101 1098
             }
1102
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
1103
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $g[0]);
1099
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
1100
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $g[0]);
1104 1101
             }
1105 1102
             foreach ($j as $kk => $v) {
1106 1103
                 foreach ($v->keymap as $kkk => $vv) {
1107
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
1104
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
1108 1105
                         $j[$kk]->keymap[$kkk] = preg_replace(
1109
-                            '(\b'.preg_quote($k . '.'). ')i',
1110
-                            $alias . '.',
1106
+                            '(\b'.preg_quote($k.'.').')i',
1107
+                            $alias.'.',
1111 1108
                             $vv
1112 1109
                         );
1113 1110
                     }
@@ -1118,14 +1115,14 @@  discard block
 block discarded – undo
1118 1115
             if ($relation[2]) {
1119 1116
                 if (!$this->manualColumns) {
1120 1117
                     foreach ($relation[0]->table->getColumns() as $column) {
1121
-                        if (!in_array($getAlias($name) . '.' . $column, $f)) {
1122
-                            $f[$getAlias($name . static::SEP . $column)] = $getAlias($name) . '.' . $column;
1118
+                        if (!in_array($getAlias($name).'.'.$column, $f)) {
1119
+                            $f[$getAlias($name.static::SEP.$column)] = $getAlias($name).'.'.$column;
1123 1120
                         }
1124 1121
                     }
1125 1122
                 } else {
1126 1123
                     foreach ($relation[0]->table->getPrimaryKey() as $column) {
1127
-                        if (!in_array($getAlias($name) . '.' . $column, $f)) {
1128
-                            $f[$getAlias($name . static::SEP . $column)] = $getAlias($name) . '.' . $column;
1124
+                        if (!in_array($getAlias($name).'.'.$column, $f)) {
1125
+                            $f[$getAlias($name.static::SEP.$column)] = $getAlias($name).'.'.$column;
1129 1126
                         }
1130 1127
                     }
1131 1128
                 }
@@ -1133,7 +1130,7 @@  discard block
 block discarded – undo
1133 1130
         }
1134 1131
         $select = [];
1135 1132
         foreach ($f as $k => $field) {
1136
-            $select[] = $field . (!is_numeric($k) ? ' ' . $k : '');
1133
+            $select[] = $field.(!is_numeric($k) ? ' '.$k : '');
1137 1134
         }
1138 1135
         $sql = 'SELECT '.implode(', ', $select).' FROM '.$this->definition->getFullName().' ';
1139 1136
         $par = [];
@@ -1152,13 +1149,13 @@  discard block
 block discarded – undo
1152 1149
                 foreach ($v->keymap as $kk => $vv) {
1153 1150
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1154 1151
                 }
1155
-                $sql .= implode(' AND ', $tmp) . ' ';
1152
+                $sql .= implode(' AND ', $tmp).' ';
1156 1153
                 $sql .= 'LEFT JOIN '.$v->table->getFullName().' '.$getAlias($relation).' ON ';
1157 1154
                 $tmp = [];
1158 1155
                 foreach ($v->pivot_keymap as $kk => $vv) {
1159 1156
                     $tmp[] = $getAlias($relation).'.'.$vv.' = '.$alias.'.'.$kk.' ';
1160 1157
                 }
1161
-                $sql .= implode(' AND ', $tmp) . ' ';
1158
+                $sql .= implode(' AND ', $tmp).' ';
1162 1159
             } else {
1163 1160
                 $alias = $getAlias($relation);
1164 1161
 
@@ -1168,22 +1165,22 @@  discard block
 block discarded – undo
1168 1165
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1169 1166
                 }
1170 1167
                 if ($v->sql) {
1171
-                    $tmp[] = $v->sql . ' ';
1168
+                    $tmp[] = $v->sql.' ';
1172 1169
                     $par = array_merge($par, $v->par ?? []);
1173 1170
                 }
1174
-                $sql .= implode(' AND ', $tmp) . ' ';
1171
+                $sql .= implode(' AND ', $tmp).' ';
1175 1172
             }
1176 1173
         }
1177 1174
         foreach ($j as $k => $v) {
1178 1175
             if ($v->many) {
1179 1176
                 $many = true;
1180 1177
             }
1181
-            $sql .= ($v->many ? 'LEFT ' : '' ) . 'JOIN '.$v->table->getFullName().' '.$k.' ON ';
1178
+            $sql .= ($v->many ? 'LEFT ' : '').'JOIN '.$v->table->getFullName().' '.$k.' ON ';
1182 1179
             $tmp = [];
1183 1180
             foreach ($v->keymap as $kk => $vv) {
1184 1181
                 $tmp[] = $kk.' = '.$vv;
1185 1182
             }
1186
-            $sql .= implode(' AND ', $tmp) . ' ';
1183
+            $sql .= implode(' AND ', $tmp).' ';
1187 1184
         }
1188 1185
         if ($many && count($porder) && $this->li_mt) {
1189 1186
             $ids = $this->ids();
@@ -1191,9 +1188,9 @@  discard block
 block discarded – undo
1191 1188
                 if (count($porder) > 1) {
1192 1189
                     $pkw = [];
1193 1190
                     foreach ($porder as $name) {
1194
-                        $pkw[] = $name . ' = ?';
1191
+                        $pkw[] = $name.' = ?';
1195 1192
                     }
1196
-                    $pkw = '(' . implode(' AND ', $pkw) . ')';
1193
+                    $pkw = '('.implode(' AND ', $pkw).')';
1197 1194
                     $pkp = [];
1198 1195
                     foreach ($ids as $id) {
1199 1196
                         foreach ($id as $p) {
@@ -1205,61 +1202,61 @@  discard block
 block discarded – undo
1205 1202
                         $pkp
1206 1203
                     ];
1207 1204
                 } else {
1208
-                    $w[] = [ $porder[0] . ' IN ('.implode(',', array_fill(0, count($ids), '?')).')', $ids ];
1205
+                    $w[] = [$porder[0].' IN ('.implode(',', array_fill(0, count($ids), '?')).')', $ids];
1209 1206
                 }
1210 1207
             } else {
1211
-                $w[] = [ '1=0', [] ];
1208
+                $w[] = ['1=0', []];
1212 1209
             }
1213 1210
         }
1214 1211
         if (count($w)) {
1215 1212
             $sql .= 'WHERE ';
1216 1213
             $tmp = [];
1217 1214
             foreach ($w as $v) {
1218
-                $tmp[] = '(' . $v[0] . ')';
1215
+                $tmp[] = '('.$v[0].')';
1219 1216
                 $par = array_merge($par, $v[1]);
1220 1217
             }
1221 1218
             $sql .= implode(' AND ', $tmp).' ';
1222 1219
         }
1223 1220
         if (count($g)) {
1224
-            $sql .= 'GROUP BY ' . $g[0] . ' ';
1221
+            $sql .= 'GROUP BY '.$g[0].' ';
1225 1222
             $par = array_merge($par, $g[1]);
1226 1223
         }
1227 1224
         if (count($h)) {
1228 1225
             $sql .= 'HAVING ';
1229 1226
             $tmp = [];
1230 1227
             foreach ($h as $v) {
1231
-                $tmp[] = '(' . $v[0] . ')';
1228
+                $tmp[] = '('.$v[0].')';
1232 1229
                 $par = array_merge($par, $v[1]);
1233 1230
             }
1234 1231
             $sql .= implode(' AND ', $tmp).' ';
1235 1232
         }
1236 1233
         $ordered = false;
1237 1234
         if (count($o)) {
1238
-            $sql .= 'ORDER BY ' . $o[0] . ' ';
1235
+            $sql .= 'ORDER BY '.$o[0].' ';
1239 1236
             $par = array_merge($par, $o[1]);
1240 1237
             $ordered = true;
1241 1238
         }
1242 1239
         if (!count($g) && count($porder)) {
1243 1240
             $pdir = (count($o) && strpos($o[0], 'DESC') !== false) ? 'DESC' : 'ASC';
1244
-            $porder = array_map(function ($v) use ($pdir) {
1245
-                return $v . ' ' . $pdir;
1241
+            $porder = array_map(function($v) use ($pdir) {
1242
+                return $v.' '.$pdir;
1246 1243
             }, $porder);
1247
-            $sql .= ($ordered ? ', ' : 'ORDER BY ') . implode(', ', $porder) . ' ';
1244
+            $sql .= ($ordered ? ', ' : 'ORDER BY ').implode(', ', $porder).' ';
1248 1245
             $ordered = true;
1249 1246
         }
1250 1247
         foreach ($this->withr as $k => $v) {
1251 1248
             if (isset($v[3])) {
1252
-                $sql .= ($ordered ? ', ' : 'ORDER BY ') .
1253
-                    $getAlias($k) . '.' . $v[3] . ' ' . ($v[4] ? 'DESC' : 'ASC') . ' ';
1249
+                $sql .= ($ordered ? ', ' : 'ORDER BY ').
1250
+                    $getAlias($k).'.'.$v[3].' '.($v[4] ? 'DESC' : 'ASC').' ';
1254 1251
                 $ordered = true;
1255 1252
             }
1256 1253
         }
1257 1254
         if ((!$many || !$this->li_mt || !count($porder)) && $this->li_of[0]) {
1258 1255
             if ($this->db->driverName() === 'oracle') {
1259
-                if ((int)$this->db->driverOption('version', 0) >= 12) {
1260
-                    $sql .= 'OFFSET ' . $this->li_of[1] . ' ROWS FETCH NEXT ' . $this->li_of[0] . ' ROWS ONLY';
1256
+                if ((int) $this->db->driverOption('version', 0) >= 12) {
1257
+                    $sql .= 'OFFSET '.$this->li_of[1].' ROWS FETCH NEXT '.$this->li_of[0].' ROWS ONLY';
1261 1258
                 } else {
1262
-                    $f = array_map(function ($v) {
1259
+                    $f = array_map(function($v) {
1263 1260
                         $v = explode(' ', trim($v), 2);
1264 1261
                         if (count($v) === 2) {
1265 1262
                             return $v[1];
@@ -1267,16 +1264,16 @@  discard block
 block discarded – undo
1267 1264
                         $v = explode('.', $v[0], 2);
1268 1265
                         return count($v) === 2 ? $v[1] : $v[0];
1269 1266
                     }, $select);
1270
-                    $sql = "SELECT " . implode(', ', $f) . "
1267
+                    $sql = "SELECT ".implode(', ', $f)."
1271 1268
                             FROM (
1272 1269
                                 SELECT tbl__.*, rownum rnum__ FROM (
1273
-                                    " . $sql . "
1270
+                                    " . $sql."
1274 1271
                                 ) tbl__
1275
-                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1]) . "
1272
+                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1])."
1276 1273
                             ) WHERE rnum__ > " . $this->li_of[1];
1277 1274
                 }
1278 1275
             } else {
1279
-                $sql .= 'LIMIT ' . $this->li_of[0] . ' OFFSET ' . $this->li_of[1];
1276
+                $sql .= 'LIMIT '.$this->li_of[0].' OFFSET '.$this->li_of[1];
1280 1277
             }
1281 1278
         }
1282 1279
         return $this->qiterator = new TableQueryIterator(
@@ -1326,12 +1323,12 @@  discard block
 block discarded – undo
1326 1323
                 $ret[$k] = str_repeat(' ', 255);
1327 1324
                 $par[] = &$ret[$k];
1328 1325
             }
1329
-            $sql .= ' RETURNING ' . implode(',', $primary) .
1330
-                ' INTO ' . implode(',', array_fill(0, count($primary), '?'));
1326
+            $sql .= ' RETURNING '.implode(',', $primary).
1327
+                ' INTO '.implode(',', array_fill(0, count($primary), '?'));
1331 1328
             $this->db->query($sql, $par);
1332 1329
             return $ret;
1333 1330
         } elseif ($this->db->driverName() === 'postgre') {
1334
-            $sql .= ' RETURNING ' . implode(',', $primary);
1331
+            $sql .= ' RETURNING '.implode(',', $primary);
1335 1332
             return $this->db->one($sql, $par, false);
1336 1333
         } else {
1337 1334
             $ret = [];
@@ -1362,9 +1359,9 @@  discard block
 block discarded – undo
1362 1359
         }
1363 1360
         $sql = 'UPDATE '.$table.' SET ';
1364 1361
         $par = [];
1365
-        $sql .= implode(', ', array_map(function ($v) {
1366
-            return $v . ' = ?';
1367
-        }, array_keys($update))) . ' ';
1362
+        $sql .= implode(', ', array_map(function($v) {
1363
+            return $v.' = ?';
1364
+        }, array_keys($update))).' ';
1368 1365
         $par = array_merge($par, array_values($update));
1369 1366
         if (count($this->where)) {
1370 1367
             $sql .= 'WHERE ';
@@ -1373,7 +1370,7 @@  discard block
 block discarded – undo
1373 1370
                 $tmp[] = $v[0];
1374 1371
                 $par = array_merge($par, $v[1]);
1375 1372
             }
1376
-            $sql .= implode(' AND ', $tmp) . ' ';
1373
+            $sql .= implode(' AND ', $tmp).' ';
1377 1374
         }
1378 1375
         if (count($this->order)) {
1379 1376
             $sql .= $this->order[0];
@@ -1397,7 +1394,7 @@  discard block
 block discarded – undo
1397 1394
                 $tmp[] = $v[0];
1398 1395
                 $par = array_merge($par, $v[1]);
1399 1396
             }
1400
-            $sql .= implode(' AND ', $tmp) . ' ';
1397
+            $sql .= implode(' AND ', $tmp).' ';
1401 1398
         }
1402 1399
         if (count($this->order)) {
1403 1400
             $sql .= $this->order[0];
@@ -1428,15 +1425,15 @@  discard block
 block discarded – undo
1428 1425
             try {
1429 1426
                 $name = array_reduce(
1430 1427
                     $parts,
1431
-                    function ($carry, $item) use (&$table, $select) {
1428
+                    function($carry, $item) use (&$table, $select) {
1432 1429
                         if (!$table->hasRelation($item)) {
1433
-                            throw new DBException('Invalid relation name: '.$table->getName().' -> ' . $item);
1430
+                            throw new DBException('Invalid relation name: '.$table->getName().' -> '.$item);
1434 1431
                         }
1435 1432
                         $relation = $table->getRelation($item);
1436 1433
                         if (!$relation) {
1437
-                            throw new DBException('Invalid relation name: '.$table->getName().' -> ' . $item);
1434
+                            throw new DBException('Invalid relation name: '.$table->getName().' -> '.$item);
1438 1435
                         }
1439
-                        $name = $carry ? $carry . static::SEP . $item : $item;
1436
+                        $name = $carry ? $carry.static::SEP.$item : $item;
1440 1437
                         $this->withr[$name] = [
1441 1438
                             $relation,
1442 1439
                             $carry ?? $table->getName(),
@@ -1507,9 +1504,9 @@  discard block
 block discarded – undo
1507 1504
 
1508 1505
         $aliases = [];
1509 1506
         $aliases_ext = [];
1510
-        $getAlias = function ($name) use (&$aliases, &$aliases_ext) {
1507
+        $getAlias = function($name) use (&$aliases, &$aliases_ext) {
1511 1508
             // to bypass use: return $name;
1512
-            $aliases[$name] = $aliases[$name] ?? 'alias' . static::SEP . count($aliases);
1509
+            $aliases[$name] = $aliases[$name] ?? 'alias'.static::SEP.count($aliases);
1513 1510
             if (isset($aliases_ext[$name])) {
1514 1511
                 unset($aliases_ext[$name]);
1515 1512
             }
@@ -1529,7 +1526,7 @@  discard block
 block discarded – undo
1529 1526
         $w = $this->where;
1530 1527
         $h = $this->having;
1531 1528
         $o = $this->order;
1532
-        $j = array_map(function ($v) {
1529
+        $j = array_map(function($v) {
1533 1530
             return clone $v;
1534 1531
         }, $this->joins);
1535 1532
 
@@ -1538,24 +1535,24 @@  discard block
 block discarded – undo
1538 1535
                 continue;
1539 1536
             }
1540 1537
             foreach ($w as $kk => $v) {
1541
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1542
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
1538
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1539
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
1543 1540
                 }
1544 1541
             }
1545 1542
             foreach ($h as $kk => $v) {
1546
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1547
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
1543
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1544
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
1548 1545
                 }
1549 1546
             }
1550
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
1551
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
1547
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
1548
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
1552 1549
             }
1553 1550
             foreach ($j as $kk => $v) {
1554 1551
                 foreach ($v->keymap as $kkk => $vv) {
1555
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
1552
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
1556 1553
                         $j[$kk]->keymap[$kkk] = preg_replace(
1557
-                            '(\b'.preg_quote($k . '.'). ')i',
1558
-                            $getAlias($k) . '.',
1554
+                            '(\b'.preg_quote($k.'.').')i',
1555
+                            $getAlias($k).'.',
1559 1556
                             $vv
1560 1557
                         );
1561 1558
                     }
@@ -1564,52 +1561,52 @@  discard block
 block discarded – undo
1564 1561
         }
1565 1562
         foreach ($this->definition->getRelations() as $k => $v) {
1566 1563
             foreach ($w as $kk => $vv) {
1567
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
1568
-                    $relations[$k] = [ $v, $table ];
1569
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
1564
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
1565
+                    $relations[$k] = [$v, $table];
1566
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
1570 1567
                 }
1571 1568
             }
1572
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
1573
-                $relations[$k] = [ $v, $table ];
1574
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
1575
-                $o[2] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[2]);
1569
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
1570
+                $relations[$k] = [$v, $table];
1571
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
1572
+                $o[2] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[2]);
1576 1573
             }
1577 1574
             foreach ($h as $kk => $vv) {
1578
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
1579
-                    $relations[$k] = [ $v, $table ];
1580
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
1575
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
1576
+                    $relations[$k] = [$v, $table];
1577
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
1581 1578
                 }
1582 1579
             }
1583 1580
             foreach ($j as $kk => $vv) {
1584 1581
                 foreach ($vv->keymap as $kkk => $vvv) {
1585
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vvv)) {
1586
-                        $relations[$k] = [ $v, $table ];
1582
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vvv)) {
1583
+                        $relations[$k] = [$v, $table];
1587 1584
                         $j[$kk]->keymap[$kkk] =
1588
-                            preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vvv);
1585
+                            preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vvv);
1589 1586
                     }
1590 1587
                 }
1591 1588
             }
1592 1589
         }
1593 1590
         foreach ($aliases_ext as $k => $alias) {
1594 1591
             foreach ($w as $kk => $v) {
1595
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1596
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
1592
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1593
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
1597 1594
                 }
1598 1595
             }
1599 1596
             foreach ($h as $kk => $v) {
1600
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1601
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
1597
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1598
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
1602 1599
                 }
1603 1600
             }
1604
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
1605
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $o[0]);
1601
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
1602
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $o[0]);
1606 1603
             }
1607 1604
             foreach ($j as $kk => $v) {
1608 1605
                 foreach ($v->keymap as $kkk => $vv) {
1609
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
1606
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
1610 1607
                         $j[$kk]->keymap[$kkk] = preg_replace(
1611
-                            '(\b'.preg_quote($k . '.'). ')i',
1612
-                            $alias . '.',
1608
+                            '(\b'.preg_quote($k.'.').')i',
1609
+                            $alias.'.',
1613 1610
                             $vv
1614 1611
                         );
1615 1612
                     }
@@ -1617,29 +1614,29 @@  discard block
 block discarded – undo
1617 1614
             }
1618 1615
         }
1619 1616
 
1620
-        $key = array_map(function ($v) use ($table) {
1621
-            return $table . '.' . $v;
1617
+        $key = array_map(function($v) use ($table) {
1618
+            return $table.'.'.$v;
1622 1619
         }, $this->pkey);
1623 1620
         $own = false;
1624 1621
         $dir = 'ASC';
1625 1622
         if (count($o)) {
1626 1623
             $dir = strpos($o[0], ' DESC') ? 'DESC' : 'ASC';
1627
-            $own = strpos($o[2], $table . '.') === 0;
1624
+            $own = strpos($o[2], $table.'.') === 0;
1628 1625
         }
1629 1626
 
1630 1627
         $dst = $key;
1631 1628
         if (count($o)) {
1632 1629
             if ($own) {
1633 1630
                 // if using own table - do not use max/min in order - that will prevent index usage
1634
-                $dst[] = $o[2] . ' orderbyfix___';
1631
+                $dst[] = $o[2].' orderbyfix___';
1635 1632
             } else {
1636
-                $dst[] = 'MAX(' . $o[2] . ') orderbyfix___';
1633
+                $dst[] = 'MAX('.$o[2].') orderbyfix___';
1637 1634
             }
1638 1635
         }
1639 1636
         $dst = array_unique($dst);
1640 1637
 
1641 1638
         $par = [];
1642
-        $sql  = 'SELECT DISTINCT '.implode(', ', $dst).' FROM '.$this->definition->getFullName().' ';
1639
+        $sql = 'SELECT DISTINCT '.implode(', ', $dst).' FROM '.$this->definition->getFullName().' ';
1643 1640
         foreach ($relations as $k => $v) {
1644 1641
             $table = $v[1] !== $this->definition->getName() ? $getAlias($v[1]) : $v[1];
1645 1642
             $v = $v[0];
@@ -1650,13 +1647,13 @@  discard block
 block discarded – undo
1650 1647
                 foreach ($v->keymap as $kk => $vv) {
1651 1648
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1652 1649
                 }
1653
-                $sql .= implode(' AND ', $tmp) . ' ';
1650
+                $sql .= implode(' AND ', $tmp).' ';
1654 1651
                 $sql .= 'LEFT JOIN '.$v->table->getFullName().' '.$getAlias($k).' ON ';
1655 1652
                 $tmp = [];
1656 1653
                 foreach ($v->pivot_keymap as $kk => $vv) {
1657 1654
                     $tmp[] = $getAlias($k).'.'.$vv.' = '.$alias.'.'.$kk.' ';
1658 1655
                 }
1659
-                $sql .= implode(' AND ', $tmp) . ' ';
1656
+                $sql .= implode(' AND ', $tmp).' ';
1660 1657
             } else {
1661 1658
                 $alias = $getAlias($k);
1662 1659
                 $sql .= 'LEFT JOIN '.$v->table->getFullName().' '.$alias.' ON ';
@@ -1665,37 +1662,37 @@  discard block
 block discarded – undo
1665 1662
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1666 1663
                 }
1667 1664
                 if ($v->sql) {
1668
-                    $tmp[] = $v->sql . ' ';
1665
+                    $tmp[] = $v->sql.' ';
1669 1666
                     $par = array_merge($par, $v->par ?? []);
1670 1667
                 }
1671
-                $sql .= implode(' AND ', $tmp) . ' ';
1668
+                $sql .= implode(' AND ', $tmp).' ';
1672 1669
             }
1673 1670
         }
1674 1671
         foreach ($j as $k => $v) {
1675
-            $sql .= ($v->many ? 'LEFT ' : '' ) . 'JOIN '.$v->table->getFullName().' '.$k.' ON ';
1672
+            $sql .= ($v->many ? 'LEFT ' : '').'JOIN '.$v->table->getFullName().' '.$k.' ON ';
1676 1673
             $tmp = [];
1677 1674
             foreach ($v->keymap as $kk => $vv) {
1678 1675
                 $tmp[] = $kk.' = '.$vv;
1679 1676
             }
1680
-            $sql .= implode(' AND ', $tmp) . ' ';
1677
+            $sql .= implode(' AND ', $tmp).' ';
1681 1678
         }
1682 1679
         if (count($w)) {
1683 1680
             $sql .= 'WHERE ';
1684 1681
             $tmp = [];
1685 1682
             foreach ($w as $v) {
1686
-                $tmp[] = '(' . $v[0] . ')';
1683
+                $tmp[] = '('.$v[0].')';
1687 1684
                 $par = array_merge($par, $v[1]);
1688 1685
             }
1689 1686
             $sql .= implode(' AND ', $tmp).' ';
1690 1687
         }
1691 1688
         if (!$own) {
1692
-            $sql .= 'GROUP BY ' . implode(', ', $key) . ' ';
1689
+            $sql .= 'GROUP BY '.implode(', ', $key).' ';
1693 1690
         }
1694 1691
         if (count($h)) {
1695 1692
             $sql .= 'HAVING ';
1696 1693
             $tmp = [];
1697 1694
             foreach ($h as $v) {
1698
-                $tmp[] = '(' . $v[0] . ')';
1695
+                $tmp[] = '('.$v[0].')';
1699 1696
                 $par = array_merge($par, $v[1]);
1700 1697
             }
1701 1698
             $sql .= implode(' AND ', $tmp).' ';
@@ -1703,38 +1700,38 @@  discard block
 block discarded – undo
1703 1700
         if (count($o)) {
1704 1701
             $sql .= 'ORDER BY ';
1705 1702
             if ($own) {
1706
-                $sql .= $o[2] . ' ' . $dir;
1703
+                $sql .= $o[2].' '.$dir;
1707 1704
             } else {
1708
-                $sql .= 'MAX('.$o[2].') ' . $dir;
1705
+                $sql .= 'MAX('.$o[2].') '.$dir;
1709 1706
             }
1710 1707
         }
1711 1708
         $porder = [];
1712 1709
         $pdir = (count($o) && strpos($o[0], 'DESC') !== false) ? 'DESC' : 'ASC';
1713 1710
         foreach ($this->definition->getPrimaryKey() as $field) {
1714
-            $porder[] = $this->getColumn($field)['name'] . ' ' . $pdir;
1711
+            $porder[] = $this->getColumn($field)['name'].' '.$pdir;
1715 1712
         }
1716 1713
         if (count($porder)) {
1717
-            $sql .= (count($o) ? ', ' : 'ORDER BY ') . implode(', ', $porder) . ' ';
1714
+            $sql .= (count($o) ? ', ' : 'ORDER BY ').implode(', ', $porder).' ';
1718 1715
         }
1719 1716
 
1720 1717
         if ($this->li_of[0]) {
1721 1718
             if ($this->db->driverName() === 'oracle') {
1722
-                if ((int)$this->db->driverOption('version', 12) >= 12) {
1723
-                    $sql .= 'OFFSET ' . $this->li_of[1] . ' ROWS FETCH NEXT ' . $this->li_of[0] . ' ROWS ONLY';
1719
+                if ((int) $this->db->driverOption('version', 12) >= 12) {
1720
+                    $sql .= 'OFFSET '.$this->li_of[1].' ROWS FETCH NEXT '.$this->li_of[0].' ROWS ONLY';
1724 1721
                 } else {
1725
-                    $sql = "SELECT " . implode(', ', $dst) . "
1722
+                    $sql = "SELECT ".implode(', ', $dst)."
1726 1723
                             FROM (
1727 1724
                                 SELECT tbl__.*, rownum rnum__ FROM (
1728
-                                    " . $sql . "
1725
+                                    " . $sql."
1729 1726
                                 ) tbl__
1730
-                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1]) . "
1727
+                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1])."
1731 1728
                             ) WHERE rnum__ > " . $this->li_of[1];
1732 1729
                 }
1733 1730
             } else {
1734
-                $sql .= 'LIMIT ' . $this->li_of[0] . ' OFFSET ' . $this->li_of[1];
1731
+                $sql .= 'LIMIT '.$this->li_of[0].' OFFSET '.$this->li_of[1];
1735 1732
             }
1736 1733
         }
1737
-        return array_map(function ($v) {
1734
+        return array_map(function($v) {
1738 1735
             if (array_key_exists('orderbyfix___', $v)) {
1739 1736
                 unset($v['orderbyfix___']);
1740 1737
             }
Please login to merge, or discard this patch.
src/schema/Mapper.php 1 patch
Spacing   +20 added lines, -21 removed lines patch added patch discarded remove patch
@@ -28,7 +28,7 @@  discard block
 block discarded – undo
28 28
      * @param class-string<T> $clss
29 29
      * @return void
30 30
      */
31
-    public function __construct(DBInterface $db, string|Table|null $table = '', string $clss = Entity::class)
31
+    public function __construct(DBInterface $db, string | Table | null $table = '', string $clss = Entity::class)
32 32
     {
33 33
         $this->db = $db;
34 34
         if (!$table) {
@@ -64,7 +64,7 @@  discard block
 block discarded – undo
64 64
         $temp = [];
65 65
         foreach ($this->table->getPrimaryKey() as $column) {
66 66
             try {
67
-                $temp[(string)$column] = $entity->{$column} ?? null;
67
+                $temp[(string) $column] = $entity->{$column} ?? null;
68 68
                 /** @phpstan-ignore-next-line */
69 69
             } catch (\Throwable $ignore) {
70 70
             }
@@ -94,7 +94,7 @@  discard block
 block discarded – undo
94 94
 
95 95
         // BEG: ugly hack to get relations changed directly on the object (not hydrated)
96 96
         $hack = [];
97
-        foreach ((array)$entity as $k => $v) {
97
+        foreach ((array) $entity as $k => $v) {
98 98
             $hack[$k[0] === "\0" ? substr($k, strrpos($k, "\0", 1) + 1) : $k] = $v;
99 99
         }
100 100
         $hack = $hack['changed'] ?? [];
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
                     array_key_exists($column, $hack) ||
111 111
                         $fetch
112 112
                 ) {
113
-                    $temp[(string)$column] = $entity->{$column};
113
+                    $temp[(string) $column] = $entity->{$column};
114 114
                 }
115 115
             } catch (\Throwable $ignore) {
116 116
             }
@@ -120,7 +120,7 @@  discard block
 block discarded – undo
120 120
         foreach ($relations as $relation) {
121 121
             try {
122 122
                 if (array_key_exists($relation, $fetched) || array_key_exists($relation, $hack) || $fetch) {
123
-                    $temp[(string)$relation] = $entity->{$relation};
123
+                    $temp[(string) $relation] = $entity->{$relation};
124 124
                 }
125 125
             } catch (\Throwable $ignore) {
126 126
             }
@@ -141,7 +141,7 @@  discard block
 block discarded – undo
141 141
                         $v = [];
142 142
                     }
143 143
                     if ($v instanceof Entity) {
144
-                        $v = [ $v ];
144
+                        $v = [$v];
145 145
                     }
146 146
                     if (is_array($v)) {
147 147
                         foreach ($v as $kk => $vv) {
@@ -215,10 +215,10 @@  discard block
 block discarded – undo
215 215
         $temp = [];
216 216
         foreach ($this->table->getColumns() as $column) {
217 217
             if (array_key_exists($column, $data)) {
218
-                $temp[(string)$column] = $data[$column];
218
+                $temp[(string) $column] = $data[$column];
219 219
             } else {
220 220
                 if ($empty) {
221
-                    $temp[(string)$column] = null;
221
+                    $temp[(string) $column] = null;
222 222
                 }
223 223
             }
224 224
         }
@@ -246,7 +246,7 @@  discard block
 block discarded – undo
246 246
         $lazy = [];
247 247
         foreach ($this->table->getColumns() as $column) {
248 248
             if (!array_key_exists($column, $data)) {
249
-                $lazy[$column] = function ($entity) use ($column) {
249
+                $lazy[$column] = function($entity) use ($column) {
250 250
                     $query = $this->db->table($this->table->getFullName());
251 251
                     foreach ($this->id($entity) as $k => $v) {
252 252
                         $query->filter($k, $v);
@@ -269,7 +269,7 @@  discard block
 block discarded – undo
269 269
     {
270 270
         $relations = [];
271 271
         foreach ($this->table->getRelations() as $name => $relation) {
272
-            $relations[$name] = function (
272
+            $relations[$name] = function(
273 273
                 $entity,
274 274
                 bool $queryOnly = false,
275 275
                 bool $fetchedOnly = false
@@ -284,10 +284,10 @@  discard block
 block discarded – undo
284 284
                         return $this->objects[spl_object_hash($entity)][4][$name] = null;
285 285
                     }
286 286
                     $value = $relation->many ?
287
-                        Collection::from(array_map(function ($v) use ($mapper) {
287
+                        Collection::from(array_map(function($v) use ($mapper) {
288 288
                             return $mapper->entity($v);
289 289
                         }, $data[$name]))
290
-                            ->filter(function ($v) use ($mapper) {
290
+                            ->filter(function($v) use ($mapper) {
291 291
                                 return !$mapper->deleted($v);
292 292
                             }) :
293 293
                         ($mapper->deleted($data[$name]) ? null : $mapper->entity($data[$name]));
@@ -299,7 +299,7 @@  discard block
 block discarded – undo
299 299
                 }
300 300
                 $query = $this->db->tableMapped($relation->table->getFullName());
301 301
                 if ($relation->sql) {
302
-                    $query->where($relation->sql, $relation->par?:[]);
302
+                    $query->where($relation->sql, $relation->par ?: []);
303 303
                 }
304 304
                 if ($relation->pivot) {
305 305
                     $nm = null;
@@ -320,7 +320,7 @@  discard block
 block discarded – undo
320 320
                     }
321 321
                     $pk = $this->id($entity);
322 322
                     foreach ($pk as $k => $v) {
323
-                        $query->filter($nm . '.' . $k, $v);
323
+                        $query->filter($nm.'.'.$k, $v);
324 324
                     }
325 325
                 } else {
326 326
                     $temp = $this->toArray($entity, array_keys($relation->keymap), [], true);
@@ -332,10 +332,9 @@  discard block
 block discarded – undo
332 332
                     return $query;
333 333
                 }
334 334
                 $value = $relation->many ?
335
-                    $query->iterator() :
336
-                    ($query[0] ?? null);
335
+                    $query->iterator() : ($query[0] ?? null);
337 336
                 if ($value instanceof Collection) {
338
-                    $value->filter(function ($v) use ($mapper) {
337
+                    $value->filter(function($v) use ($mapper) {
339 338
                         return !$mapper->deleted($v);
340 339
                     });
341 340
                 } elseif (isset($value) && $mapper->deleted($value)) {
@@ -355,7 +354,7 @@  discard block
 block discarded – undo
355 354
     {
356 355
         // BEG: ugly hack to get changed columns
357 356
         $hack = [];
358
-        foreach ((array)$entity as $k => $v) {
357
+        foreach ((array) $entity as $k => $v) {
359 358
             $hack[$k[0] === "\0" ? substr($k, strrpos($k, "\0", 1) + 1) : $k] = $v;
360 359
         }
361 360
         $orig = $hack['data'] ?? [];
@@ -661,7 +660,7 @@  discard block
 block discarded – undo
661 660
             }
662 661
         }
663 662
     }
664
-    public function exists(array|object $entity): bool
663
+    public function exists(array | object $entity): bool
665 664
     {
666 665
         if (is_array($entity)) {
667 666
             $primary = [];
@@ -675,7 +674,7 @@  discard block
 block discarded – undo
675 674
         return isset($this->objects[spl_object_hash($entity)]) &&
676 675
             $this->objects[spl_object_hash($entity)][5] === false;
677 676
     }
678
-    public function deleted(array|object $entity): bool
677
+    public function deleted(array | object $entity): bool
679 678
     {
680 679
         if (is_array($entity)) {
681 680
             $primary = [];
@@ -761,7 +760,7 @@  discard block
 block discarded – undo
761 760
         return array_filter(
762 761
             array_values(
763 762
                 array_map(
764
-                    function ($v) {
763
+                    function($v) {
765 764
                         return $v[5] ? null : ($v[1] ?? null);
766 765
                     },
767 766
                     $this->objects
Please login to merge, or discard this patch.