Completed
Push — master ( d71aea...a66a19 )
by Ivan
13:16
created
src/schema/TableQuery.php 1 patch
Spacing   +256 added lines, -260 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,0];
25
+    protected array $li_of = [0, 0, 0];
26 26
     protected array $fields = [];
27 27
     protected array $withr = [];
28 28
     protected array $joins = [];
@@ -36,11 +36,11 @@  discard block
 block discarded – undo
36 36
      * @param  Table|string   $table           the name or definition of the main table in the query
37 37
      * @param  bool           $findRelations   should the query builder try to find missing joins
38 38
      */
39
-    public function __construct(DBInterface $db, Table|string $table, bool $findRelations = false)
39
+    public function __construct(DBInterface $db, Table | string $table, bool $findRelations = false)
40 40
     {
41 41
         $this->db = $db;
42 42
         $this->findRelations = $findRelations;
43
-        $this->definition = $table instanceof Table ? $table : $this->db->definition((string)$table);
43
+        $this->definition = $table instanceof Table ? $table : $this->db->definition((string) $table);
44 44
         $primary = $this->definition->getPrimaryKey();
45 45
         $columns = $this->definition->getColumns();
46 46
         $this->pkey = count($primary) ? $primary : $columns;
@@ -63,7 +63,7 @@  discard block
 block discarded – undo
63 63
     {
64 64
         $column = explode('.', $column);
65 65
         if (count($column) === 1) {
66
-            $column = [ $this->definition->getFullName(), $column[0] ];
66
+            $column = [$this->definition->getFullName(), $column[0]];
67 67
             $col = $this->definition->getColumn($column[1]);
68 68
             if (!$col) {
69 69
                 throw new DBException('Invalid column name in own table');
@@ -102,7 +102,7 @@  discard block
 block discarded – undo
102 102
                             $path = $this->db->findRelation($this->definition->getName(), $column[0]);
103 103
                         }
104 104
                         if (!count($path)) {
105
-                            throw new DBException('Invalid foreign table / column name: ' . implode(',', $column));
105
+                            throw new DBException('Invalid foreign table / column name: '.implode(',', $column));
106 106
                         }
107 107
                         unset($path[0]);
108 108
                         $this->with(implode('.', $path), false);
@@ -115,26 +115,26 @@  discard block
 block discarded – undo
115 115
             if ($this->definition->hasRelation(implode('.', $column))) {
116 116
                 $this->with(implode('.', $column), false);
117 117
                 $col = $this->definition->getRelation(implode('.', $column))?->table?->getColumn($name);
118
-                $column = [ implode('.', $column), $name ];
118
+                $column = [implode('.', $column), $name];
119 119
             } else {
120 120
                 $this->with(implode('.', $column), false);
121 121
                 $table = $this->definition;
122 122
                 $table = array_reduce(
123 123
                     $column,
124
-                    function ($carry, $item) use (&$table) {
124
+                    function($carry, $item) use (&$table) {
125 125
                         $table = $table->getRelation($item)->table;
126 126
                         return $table;
127 127
                     }
128 128
                 );
129 129
                 $col = $table->getColumn($name);
130
-                $column = [ implode(static::SEP, $column), $name ];
130
+                $column = [implode(static::SEP, $column), $name];
131 131
             }
132 132
         }
133
-        return [ 'name' => implode('.', $column), 'data' => $col ];
133
+        return ['name' => implode('.', $column), 'data' => $col];
134 134
     }
135 135
     protected function normalizeValue(TableColumn $col, mixed $value): mixed
136 136
     {
137
-        $strict = (int)$this->db->driverOption('strict', 0) > 0;
137
+        $strict = (int) $this->db->driverOption('strict', 0) > 0;
138 138
         if ($value === null && $col->isNullable()) {
139 139
             return null;
140 140
         }
@@ -144,7 +144,7 @@  discard block
 block discarded – undo
144 144
                     $temp = strtotime($value);
145 145
                     if (!$temp) {
146 146
                         if ($strict) {
147
-                            throw new DBException('Invalid value for date column ' . $col->getName());
147
+                            throw new DBException('Invalid value for date column '.$col->getName());
148 148
                         }
149 149
                         return null;
150 150
                     }
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
                     return $value->format('Y-m-d');
158 158
                 }
159 159
                 if ($strict) {
160
-                    throw new DBException('Invalid value (unknown data type) for date column ' . $col->getName());
160
+                    throw new DBException('Invalid value (unknown data type) for date column '.$col->getName());
161 161
                 }
162 162
                 return $value;
163 163
             case 'datetime':
@@ -165,7 +165,7 @@  discard block
 block discarded – undo
165 165
                     $temp = strtotime($value);
166 166
                     if (!$temp) {
167 167
                         if ($strict) {
168
-                            throw new DBException('Invalid value for datetime column ' . $col->getName());
168
+                            throw new DBException('Invalid value for datetime column '.$col->getName());
169 169
                         }
170 170
                         return null;
171 171
                     }
@@ -178,7 +178,7 @@  discard block
 block discarded – undo
178 178
                     return $value->format('Y-m-d H:i:s');
179 179
                 }
180 180
                 if ($strict) {
181
-                    throw new DBException('Invalid value (unknown data type) for datetime column ' . $col->getName());
181
+                    throw new DBException('Invalid value (unknown data type) for datetime column '.$col->getName());
182 182
                 }
183 183
                 return $value;
184 184
             case 'enum':
@@ -186,7 +186,7 @@  discard block
 block discarded – undo
186 186
                 if (is_int($value)) {
187 187
                     if (!isset($values[$value])) {
188 188
                         if ($strict) {
189
-                            throw new DBException('Invalid value (using integer) for enum ' . $col->getName());
189
+                            throw new DBException('Invalid value (using integer) for enum '.$col->getName());
190 190
                         }
191 191
                         return $value;
192 192
                     }
@@ -194,23 +194,23 @@  discard block
 block discarded – undo
194 194
                 }
195 195
                 if (!in_array($value, $col->getValues())) {
196 196
                     if ($strict) {
197
-                        throw new DBException('Invalid value for enum ' . $col->getName());
197
+                        throw new DBException('Invalid value for enum '.$col->getName());
198 198
                     }
199 199
                     return 0;
200 200
                 }
201 201
                 return $value;
202 202
             case 'int':
203
-                $temp = preg_replace('([^+\-0-9]+)', '', (string)$value);
204
-                return is_string($temp) ? (int)$temp : 0;
203
+                $temp = preg_replace('([^+\-0-9]+)', '', (string) $value);
204
+                return is_string($temp) ? (int) $temp : 0;
205 205
             case 'float':
206
-                $temp = preg_replace('([^+\-0-9.]+)', '', str_replace(',', '.', (string)$value));
207
-                return is_string($temp) ? (float)$temp : 0;
206
+                $temp = preg_replace('([^+\-0-9.]+)', '', str_replace(',', '.', (string) $value));
207
+                return is_string($temp) ? (float) $temp : 0;
208 208
             case 'text':
209 209
                 // check using strlen first, in order to avoid hitting mb_ functions which might be polyfilled
210 210
                 // because the polyfill is quite slow
211 211
                 if ($col->hasLength() && strlen($value) > $col->getLength() && mb_strlen($value) > $col->getLength()) {
212 212
                     if ($strict) {
213
-                        throw new DBException('Invalid value for text column ' . $col->getName());
213
+                        throw new DBException('Invalid value for text column '.$col->getName());
214 214
                     }
215 215
                     return mb_substr($value, 0, $col->getLength());
216 216
                 }
@@ -241,7 +241,7 @@  discard block
 block discarded – undo
241 241
             if ($column->getBasicType() !== 'text') {
242 242
                 switch ($this->db->driverName()) {
243 243
                     case 'oracle':
244
-                        $name = 'CAST(' . $name . ' AS NVARCHAR(500))';
244
+                        $name = 'CAST('.$name.' AS NVARCHAR(500))';
245 245
                         break;
246 246
                     case 'postgre':
247 247
                         $name = $name.'::text';
@@ -256,27 +256,26 @@  discard block
 block discarded – undo
256 256
             $sql = [];
257 257
             $par = [];
258 258
             foreach ($values as $value) {
259
-                $value = str_replace(['%', '_'], ['\\%','\\_'], $value) . '%';
259
+                $value = str_replace(['%', '_'], ['\\%', '\\_'], $value).'%';
260 260
                 if ($mode === 'contains' || $mode === 'icontains') {
261
-                    $value = '%' . $value;
261
+                    $value = '%'.$value;
262 262
                 }
263 263
                 if ($mode === 'ends' || $mode === 'iends') {
264
-                    $value = '%' . rtrim($value, '%');
264
+                    $value = '%'.rtrim($value, '%');
265 265
                 }
266 266
                 if ($mode === 'icontains' || $mode === 'ilike' || $mode === 'iends') {
267 267
                     $value = mb_strtoupper($value);
268
-                    $name = 'UPPER(' . $name . ')';
268
+                    $name = 'UPPER('.$name.')';
269 269
                 }
270
-                $sql[] = $negate ? $name . ' NOT LIKE ?' : $name . ' LIKE ?';
270
+                $sql[] = $negate ? $name.' NOT LIKE ?' : $name.' LIKE ?';
271 271
                 $par[] = $value;
272 272
             }
273 273
             return $negate ?
274 274
                 [
275
-                    '(' . implode(' AND ', $sql) . ')',
275
+                    '('.implode(' AND ', $sql).')',
276 276
                     $par
277
-                ] :
278
-                [
279
-                    '(' . implode(' OR ', $sql) . ')',
277
+                ] : [
278
+                    '('.implode(' OR ', $sql).')',
280 279
                     $par
281 280
                 ];
282 281
         }
@@ -288,25 +287,23 @@  discard block
 block discarded – undo
288 287
         }
289 288
         if (is_null($value)) {
290 289
             return $negate ?
291
-                [ $name . ' IS NOT NULL', [] ]:
292
-                [ $name . ' IS NULL', [] ];
290
+                [$name.' IS NOT NULL', []] : [$name.' IS NULL', []];
293 291
         }
294 292
         if (!is_array($value)) {
295 293
             return $negate ?
296 294
                 [
297
-                    $name . ' <> ?',
298
-                    [ $this->normalizeValue($column, $value) ]
299
-                ] :
300
-                [
301
-                    $name . ' = ?',
302
-                    [ $this->normalizeValue($column, $value) ]
295
+                    $name.' <> ?',
296
+                    [$this->normalizeValue($column, $value)]
297
+                ] : [
298
+                    $name.' = ?',
299
+                    [$this->normalizeValue($column, $value)]
303 300
                 ];
304 301
         }
305 302
         if (isset($value['beg']) && strlen($value['beg']) && (!isset($value['end']) || !strlen($value['end']))) {
306
-            $value = [ 'gte' => $value['beg'] ];
303
+            $value = ['gte' => $value['beg']];
307 304
         }
308 305
         if (isset($value['end']) && strlen($value['end']) && (!isset($value['beg']) || !strlen($value['beg']))) {
309
-            $value = [ 'lte' => $value['end'] ];
306
+            $value = ['lte' => $value['end']];
310 307
         }
311 308
         if (isset($value['beg']) && isset($value['end'])) {
312 309
             return $negate ?
@@ -316,8 +313,7 @@  discard block
 block discarded – undo
316 313
                         $this->normalizeValue($column, $value['beg']),
317 314
                         $this->normalizeValue($column, $value['end'])
318 315
                     ]
319
-                ] :
320
-                [
316
+                ] : [
321 317
                     $name.' BETWEEN ? AND ?',
322 318
                     [
323 319
                         $this->normalizeValue($column, $value['beg']),
@@ -329,42 +325,42 @@  discard block
 block discarded – undo
329 325
             $sql = [];
330 326
             $par = [];
331 327
             if (isset($value['gt'])) {
332
-                $sql[] = $name. ' ' . ($negate ? '<=' : '>') . ' ?';
328
+                $sql[] = $name.' '.($negate ? '<=' : '>').' ?';
333 329
                 $par[] = $this->normalizeValue($column, $value['gt']);
334 330
             }
335 331
             if (isset($value['gte'])) {
336
-                $sql[] = $name. ' ' . ($negate ? '<' : '>=') . ' ?';
332
+                $sql[] = $name.' '.($negate ? '<' : '>=').' ?';
337 333
                 $par[] = $this->normalizeValue($column, $value['gte']);
338 334
             }
339 335
             if (isset($value['lt'])) {
340
-                $sql[] = $name. ' ' . ($negate ? '>=' : '<') . ' ?';
336
+                $sql[] = $name.' '.($negate ? '>=' : '<').' ?';
341 337
                 $par[] = $this->normalizeValue($column, $value['lt']);
342 338
             }
343 339
             if (isset($value['lte'])) {
344
-                $sql[] = $name. ' ' . ($negate ? '>' : '<=') . ' ?';
340
+                $sql[] = $name.' '.($negate ? '>' : '<=').' ?';
345 341
                 $par[] = $this->normalizeValue($column, $value['lte']);
346 342
             }
347 343
             return [
348
-                '(' . implode(' AND ', $sql) . ')',
344
+                '('.implode(' AND ', $sql).')',
349 345
                 $par
350 346
             ];
351 347
         }
352 348
 
353
-        $value = array_values(array_map(function ($v) use ($column) {
349
+        $value = array_values(array_map(function($v) use ($column) {
354 350
             return $this->normalizeValue($column, $v);
355 351
         }, $value));
356 352
         if ($this->db->driverName() === 'oracle') {
357 353
             $sql = [];
358 354
             $par = [];
359 355
             for ($i = 0; $i < count($value); $i += 500) {
360
-                $sql[] = $negate ? $name . ' NOT IN (??)' : $name . ' IN (??)';
356
+                $sql[] = $negate ? $name.' NOT IN (??)' : $name.' IN (??)';
361 357
                 $par[] = array_slice($value, $i, 500);
362 358
             }
363
-            $sql = '(' . implode($negate ? ' AND ' : ' OR ', $sql) . ')';
364
-            return [ $sql, $par ];
359
+            $sql = '('.implode($negate ? ' AND ' : ' OR ', $sql).')';
360
+            return [$sql, $par];
365 361
         }
366 362
         return [
367
-            $negate ? $name . ' NOT IN (??)' : $name . ' IN (??)',
363
+            $negate ? $name.' NOT IN (??)' : $name.' IN (??)',
368 364
             [$value]
369 365
         ];
370 366
     }
@@ -396,7 +392,7 @@  discard block
 block discarded – undo
396 392
                 $par = array_merge($par, $temp[1]);
397 393
             }
398 394
         }
399
-        return $this->where('(' . implode(' OR ', $sql) . ')', $par);
395
+        return $this->where('('.implode(' OR ', $sql).')', $par);
400 396
     }
401 397
     /**
402 398
      * Filter the results matching all of the criteria
@@ -414,7 +410,7 @@  discard block
 block discarded – undo
414 410
                 $par = array_merge($par, $temp[1]);
415 411
             }
416 412
         }
417
-        return $this->where('(' . implode(' AND ', $sql) . ')', $par);
413
+        return $this->where('('.implode(' AND ', $sql).')', $par);
418 414
     }
419 415
     /**
420 416
      * Sort by a column
@@ -429,7 +425,7 @@  discard block
 block discarded – undo
429 425
         } catch (DBException $e) {
430 426
             throw new DBException('Invalid sort column');
431 427
         }
432
-        return $this->order($column . ' ' . ($desc ? 'DESC' : 'ASC'));
428
+        return $this->order($column.' '.($desc ? 'DESC' : 'ASC'));
433 429
     }
434 430
     /**
435 431
      * Group by a column (or columns)
@@ -439,7 +435,7 @@  discard block
 block discarded – undo
439 435
     public function group($column) : static
440 436
     {
441 437
         if (!is_array($column)) {
442
-            $column = [ $column ];
438
+            $column = [$column];
443 439
         }
444 440
         foreach ($column as $k => $v) {
445 441
             $column[$k] = $this->getColumn($v)['name'];
@@ -482,7 +478,7 @@  discard block
 block discarded – undo
482 478
         $this->order = [];
483 479
         $this->having = [];
484 480
         $this->aliases = [];
485
-        $this->li_of = [0,0,0];
481
+        $this->li_of = [0, 0, 0];
486 482
         $this->qiterator = null;
487 483
         return $this;
488 484
     }
@@ -495,7 +491,7 @@  discard block
 block discarded – undo
495 491
     public function groupBy(string $sql, array $params = []) : static
496 492
     {
497 493
         $this->qiterator = null;
498
-        $this->group = [ $sql, $params ];
494
+        $this->group = [$sql, $params];
499 495
         return $this;
500 496
     }
501 497
     /**
@@ -509,7 +505,7 @@  discard block
 block discarded – undo
509 505
     public function join($table, array $fields, string $name = null, bool $multiple = true)
510 506
     {
511 507
         $this->qiterator = null;
512
-        $table = $table instanceof Table ? $table : $this->db->definition((string)$table);
508
+        $table = $table instanceof Table ? $table : $this->db->definition((string) $table);
513 509
         $name = $name ?? $table->getName();
514 510
         if (isset($this->joins[$name]) || $this->definition->hasRelation($name)) {
515 511
             throw new DBException('Alias / table name already in use');
@@ -518,7 +514,7 @@  discard block
 block discarded – undo
518 514
         foreach ($fields as $k => $v) {
519 515
             $k = explode('.', $k, 2);
520 516
             $k = count($k) == 2 ? $k[1] : $k[0];
521
-            $this->joins[$name]->keymap[$this->getColumn($name . '.' . $k)['name']] = $this->getColumn($v)['name'];
517
+            $this->joins[$name]->keymap[$this->getColumn($name.'.'.$k)['name']] = $this->getColumn($v)['name'];
522 518
         }
523 519
         return $this;
524 520
     }
@@ -531,7 +527,7 @@  discard block
 block discarded – undo
531 527
     public function where(string $sql, array $params = []) : static
532 528
     {
533 529
         $this->qiterator = null;
534
-        $this->where[] = [ $sql, $params ];
530
+        $this->where[] = [$sql, $params];
535 531
         return $this;
536 532
     }
537 533
     /**
@@ -543,7 +539,7 @@  discard block
 block discarded – undo
543 539
     public function having(string $sql, array $params = []) : static
544 540
     {
545 541
         $this->qiterator = null;
546
-        $this->having[] = [ $sql, $params ];
542
+        $this->having[] = [$sql, $params];
547 543
         return $this;
548 544
     }
549 545
     /**
@@ -563,12 +559,12 @@  discard block
 block discarded – undo
563 559
                     throw new \Exception();
564 560
                 }
565 561
                 $name = $this->getColumn(trim($name))['name'];
566
-                $sql = $name . ' ' . (strpos(strtolower($sql), ' desc') ? 'DESC' : 'ASC');
562
+                $sql = $name.' '.(strpos(strtolower($sql), ' desc') ? 'DESC' : 'ASC');
567 563
             } catch (\Exception $e) {
568 564
                 $name = null;
569 565
             }
570 566
         }
571
-        $this->order = [ $sql, $params, $name ];
567
+        $this->order = [$sql, $params, $name];
572 568
         return $this;
573 569
     }
574 570
     /**
@@ -580,7 +576,7 @@  discard block
 block discarded – undo
580 576
     public function limit(int $limit, int $offset = 0, bool $limitOnMainTable = false) : static
581 577
     {
582 578
         $this->qiterator = null;
583
-        $this->li_of = [ $limit, $offset, $limitOnMainTable ? 1 : 0 ];
579
+        $this->li_of = [$limit, $offset, $limitOnMainTable ? 1 : 0];
584 580
         return $this;
585 581
     }
586 582
     /**
@@ -591,9 +587,9 @@  discard block
 block discarded – undo
591 587
     {
592 588
         $aliases = [];
593 589
         $aliases_ext = [];
594
-        $getAlias = function ($name) use (&$aliases, &$aliases_ext) {
590
+        $getAlias = function($name) use (&$aliases, &$aliases_ext) {
595 591
             // to bypass use: return $name;
596
-            $aliases[$name] = $aliases[$name] ?? 'alias' . static::SEP . count($aliases);
592
+            $aliases[$name] = $aliases[$name] ?? 'alias'.static::SEP.count($aliases);
597 593
             if (isset($aliases_ext[$name])) {
598 594
                 unset($aliases_ext[$name]);
599 595
             }
@@ -616,7 +612,7 @@  discard block
 block discarded – undo
616 612
         $h = $this->having;
617 613
         $o = $this->order;
618 614
         $g = $this->group;
619
-        $j = array_map(function ($v) {
615
+        $j = array_map(function($v) {
620 616
             return clone $v;
621 617
         }, $this->joins);
622 618
 
@@ -626,28 +622,28 @@  discard block
 block discarded – undo
626 622
                 continue;
627 623
             }
628 624
             foreach ($w as $kk => $v) {
629
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
625
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
630 626
                     $used_relations[] = $k;
631
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
627
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
632 628
                 }
633 629
             }
634 630
             foreach ($h as $kk => $v) {
635
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
631
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
636 632
                     $used_relations[] = $k;
637
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
633
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
638 634
                 }
639 635
             }
640
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
636
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
641 637
                 $used_relations[] = $k;
642
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
638
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
643 639
             }
644 640
             foreach ($j as $kk => $v) {
645 641
                 foreach ($v->keymap as $kkk => $vv) {
646
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
642
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
647 643
                         $used_relations[] = $k;
648 644
                         $j[$kk]->keymap[$kkk] = preg_replace(
649
-                            '(\b'.preg_quote($k . '.'). ')i',
650
-                            $getAlias($k) . '.',
645
+                            '(\b'.preg_quote($k.'.').')i',
646
+                            $getAlias($k).'.',
651 647
                             $vv
652 648
                         );
653 649
                     }
@@ -656,65 +652,65 @@  discard block
 block discarded – undo
656 652
         }
657 653
         foreach ($this->definition->getRelations() as $k => $v) {
658 654
             foreach ($w as $kk => $vv) {
659
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
660
-                    $relations[$k] = [ $v, $table ];
655
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
656
+                    $relations[$k] = [$v, $table];
661 657
                     $used_relations[] = $k;
662
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
658
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
663 659
                 }
664 660
             }
665
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
666
-                $relations[$k] = [ $v, $table ];
661
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
662
+                $relations[$k] = [$v, $table];
667 663
             }
668 664
             foreach ($h as $kk => $vv) {
669
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
670
-                    $relations[$k] = [ $v, $table ];
665
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
666
+                    $relations[$k] = [$v, $table];
671 667
                     $used_relations[] = $k;
672
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
668
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
673 669
                 }
674 670
             }
675
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
676
-                $relations[$k] = [ $v, $table ];
671
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
672
+                $relations[$k] = [$v, $table];
677 673
                 $used_relations[] = $k;
678
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
674
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
679 675
             }
680 676
             foreach ($j as $kk => $vv) {
681 677
                 foreach ($vv->keymap as $kkk => $vvv) {
682
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vvv)) {
683
-                        $relations[$k] = [ $v, $table ];
678
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vvv)) {
679
+                        $relations[$k] = [$v, $table];
684 680
                         $used_relations[] = $k;
685 681
                         $j[$kk]->keymap[$kkk] =
686
-                            preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vvv);
682
+                            preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vvv);
687 683
                     }
688 684
                 }
689 685
             }
690 686
         }
691 687
         foreach ($aliases_ext as $k => $alias) {
692 688
             foreach ($w as $kk => $v) {
693
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
694
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
689
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
690
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
695 691
                     $used_relations[] = $k;
696 692
                 }
697 693
             }
698 694
             foreach ($h as $kk => $v) {
699
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
700
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
695
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
696
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
701 697
                     $used_relations[] = $k;
702 698
                 }
703 699
             }
704
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
700
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
705 701
                 $used_relations[] = $k;
706 702
             }
707
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
708
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $g[0]);
703
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
704
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $g[0]);
709 705
                 $used_relations[] = $k;
710 706
             }
711 707
             foreach ($j as $kk => $v) {
712 708
                 foreach ($v->keymap as $kkk => $vv) {
713
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
709
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
714 710
                         $used_relations[] = $k;
715 711
                         $j[$kk]->keymap[$kkk] = preg_replace(
716
-                            '(\b'.preg_quote($k . '.'). ')i',
717
-                            $alias . '.',
712
+                            '(\b'.preg_quote($k.'.').')i',
713
+                            $alias.'.',
718 714
                             $vv
719 715
                         );
720 716
                     }
@@ -733,13 +729,13 @@  discard block
 block discarded – undo
733 729
                     foreach ($v->keymap as $kk => $vv) {
734 730
                         $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
735 731
                     }
736
-                    $sql .= implode(' AND ', $tmp) . ' ';
732
+                    $sql .= implode(' AND ', $tmp).' ';
737 733
                     $sql .= 'LEFT JOIN '.$v->table->getFullName().' '.$getAlias($k).' ON ';
738 734
                     $tmp = [];
739 735
                     foreach ($v->pivot_keymap as $kk => $vv) {
740 736
                         $tmp[] = $getAlias($k).'.'.$vv.' = '.$alias.'.'.$kk.' ';
741 737
                     }
742
-                    $sql .= implode(' AND ', $tmp) . ' ';
738
+                    $sql .= implode(' AND ', $tmp).' ';
743 739
                 } else {
744 740
                     $alias = $getAlias($k);
745 741
                     $sql .= 'LEFT JOIN '.$v->table->getFullName().' '.$alias.' ON ';
@@ -748,10 +744,10 @@  discard block
 block discarded – undo
748 744
                         $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
749 745
                     }
750 746
                     if ($v->sql) {
751
-                        $tmp[] = $v->sql . ' ';
747
+                        $tmp[] = $v->sql.' ';
752 748
                         $par = array_merge($par, $v->par ?? []);
753 749
                     }
754
-                    $sql .= implode(' AND ', $tmp) . ' ';
750
+                    $sql .= implode(' AND ', $tmp).' ';
755 751
                 }
756 752
             }
757 753
         }
@@ -760,12 +756,12 @@  discard block
 block discarded – undo
760 756
             if ($v->many) {
761 757
                 $jMany = true;
762 758
             }
763
-            $sql .= ($v->many ? 'LEFT ' : '' ) . 'JOIN '.$v->table->getFullName().' '.$k.' ON ';
759
+            $sql .= ($v->many ? 'LEFT ' : '').'JOIN '.$v->table->getFullName().' '.$k.' ON ';
764 760
             $tmp = [];
765 761
             foreach ($v->keymap as $kk => $vv) {
766 762
                 $tmp[] = $kk.' = '.$vv;
767 763
             }
768
-            $sql .= implode(' AND ', $tmp) . ' ';
764
+            $sql .= implode(' AND ', $tmp).' ';
769 765
         }
770 766
         if (!$jMany && !count($used_relations)) {
771 767
             $sql = str_replace('COUNT(DISTINCT ', 'COUNT(', $sql);
@@ -774,20 +770,20 @@  discard block
 block discarded – undo
774 770
             $sql .= 'WHERE ';
775 771
             $tmp = [];
776 772
             foreach ($w as $v) {
777
-                $tmp[] = '(' . $v[0] . ')';
773
+                $tmp[] = '('.$v[0].')';
778 774
                 $par = array_merge($par, $v[1]);
779 775
             }
780 776
             $sql .= implode(' AND ', $tmp).' ';
781 777
         }
782 778
         if (count($g)) {
783
-            $sql .= 'GROUP BY ' . $g[0] . ' ';
779
+            $sql .= 'GROUP BY '.$g[0].' ';
784 780
             $par = array_merge($par, $g[1]);
785 781
         }
786 782
         if (count($h)) {
787 783
             $sql .= 'HAVING ';
788 784
             $tmp = [];
789 785
             foreach ($h as $v) {
790
-                $tmp[] = '(' . $v[0] . ')';
786
+                $tmp[] = '('.$v[0].')';
791 787
                 $par = array_merge($par, $v[1]);
792 788
             }
793 789
             $sql .= implode(' AND ', $tmp).' ';
@@ -822,7 +818,7 @@  discard block
 block discarded – undo
822 818
                     $this->with(implode('.', $temp));
823 819
                     $table = array_reduce(
824 820
                         $temp,
825
-                        function ($carry, $item) use (&$table) {
821
+                        function($carry, $item) use (&$table) {
826 822
                             return $table->getRelation($item)->table;
827 823
                         }
828 824
                     );
@@ -831,7 +827,7 @@  discard block
 block discarded – undo
831 827
                 }
832 828
                 unset($fields[$k]);
833 829
                 foreach ($cols as $col) {
834
-                    $fields[] = $table . '.' . $col;
830
+                    $fields[] = $table.'.'.$col;
835 831
                 }
836 832
             }
837 833
         }
@@ -866,9 +862,9 @@  discard block
 block discarded – undo
866 862
         }
867 863
         $aliases = [];
868 864
         $aliases_ext = [];
869
-        $getAlias = function ($name) use (&$aliases, &$aliases_ext) {
865
+        $getAlias = function($name) use (&$aliases, &$aliases_ext) {
870 866
             // to bypass use: return $name;
871
-            $aliases[$name] = $aliases[$name] ?? 'alias' . static::SEP . count($aliases);
867
+            $aliases[$name] = $aliases[$name] ?? 'alias'.static::SEP.count($aliases);
872 868
             if (isset($aliases_ext[$name])) {
873 869
                 unset($aliases_ext[$name]);
874 870
             }
@@ -893,7 +889,7 @@  discard block
 block discarded – undo
893 889
         $h = $this->having;
894 890
         $o = $this->order;
895 891
         $g = $this->group;
896
-        $j = array_map(function ($v) {
892
+        $j = array_map(function($v) {
897 893
             return clone $v;
898 894
         }, $this->joins);
899 895
 
@@ -907,32 +903,32 @@  discard block
 block discarded – undo
907 903
                 continue;
908 904
             }
909 905
             foreach ($f as $kk => $field) {
910
-                if (strpos($field, $k . '.') === 0) {
911
-                    $f[$kk] = str_replace($k . '.', $getAlias($k) . '.', $field);
906
+                if (strpos($field, $k.'.') === 0) {
907
+                    $f[$kk] = str_replace($k.'.', $getAlias($k).'.', $field);
912 908
                 }
913 909
             }
914 910
             foreach ($w as $kk => $v) {
915
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
916
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
911
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
912
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
917 913
                 }
918 914
             }
919 915
             foreach ($h as $kk => $v) {
920
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
921
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
916
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
917
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
922 918
                 }
923 919
             }
924
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
925
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
920
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
921
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
926 922
             }
927
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
928
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
923
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
924
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
929 925
             }
930 926
             foreach ($j as $kk => $v) {
931 927
                 foreach ($v->keymap as $kkk => $vv) {
932
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
928
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
933 929
                         $j[$kk]->keymap[$kkk] = preg_replace(
934
-                            '(\b'.preg_quote($k . '.'). ')i',
935
-                            $getAlias($k) . '.',
930
+                            '(\b'.preg_quote($k.'.').')i',
931
+                            $getAlias($k).'.',
936 932
                             $vv
937 933
                         );
938 934
                     }
@@ -941,38 +937,38 @@  discard block
 block discarded – undo
941 937
         }
942 938
         foreach ($this->definition->getRelations() as $k => $relation) {
943 939
             foreach ($f as $kk => $field) {
944
-                if (strpos($field, $k . '.') === 0) {
945
-                    $relations[$k] = [ $relation, $table ];
946
-                    $f[$kk] = str_replace($k . '.', $getAlias($k) . '.', $field);
940
+                if (strpos($field, $k.'.') === 0) {
941
+                    $relations[$k] = [$relation, $table];
942
+                    $f[$kk] = str_replace($k.'.', $getAlias($k).'.', $field);
947 943
                 }
948 944
             }
949 945
             foreach ($w as $kk => $v) {
950
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
951
-                    $relations[$k] = [ $relation, $table ];
952
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
946
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
947
+                    $relations[$k] = [$relation, $table];
948
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
953 949
                 }
954 950
             }
955 951
             foreach ($h as $kk => $v) {
956
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
957
-                    $relations[$k] = [ $relation, $table ];
958
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
952
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
953
+                    $relations[$k] = [$relation, $table];
954
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
959 955
                 }
960 956
             }
961
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
962
-                $relations[$k] = [ $relation, $table ];
963
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
957
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
958
+                $relations[$k] = [$relation, $table];
959
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
964 960
             }
965
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
966
-                $relations[$k] = [ $relation, $table ];
967
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
961
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
962
+                $relations[$k] = [$relation, $table];
963
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
968 964
             }
969 965
             foreach ($j as $kk => $v) {
970 966
                 foreach ($v->keymap as $kkk => $vv) {
971
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
972
-                        $relations[$k] = [ $relation, $table ];
967
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
968
+                        $relations[$k] = [$relation, $table];
973 969
                         $j[$kk]->keymap[$kkk] = preg_replace(
974
-                            '(\b'.preg_quote($k . '.'). ')i',
975
-                            $getAlias($k) . '.',
970
+                            '(\b'.preg_quote($k.'.').')i',
971
+                            $getAlias($k).'.',
976 972
                             $vv
977 973
                         );
978 974
                     }
@@ -981,32 +977,32 @@  discard block
 block discarded – undo
981 977
         }
982 978
         foreach ($aliases_ext as $k => $alias) {
983 979
             foreach ($f as $kk => $field) {
984
-                if (strpos($field, $k . '.') === 0) {
985
-                    $f[$kk] = str_replace($k . '.', $alias . '.', $field);
980
+                if (strpos($field, $k.'.') === 0) {
981
+                    $f[$kk] = str_replace($k.'.', $alias.'.', $field);
986 982
                 }
987 983
             }
988 984
             foreach ($w as $kk => $v) {
989
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
990
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
985
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
986
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
991 987
                 }
992 988
             }
993 989
             foreach ($h as $kk => $v) {
994
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
995
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
990
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
991
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
996 992
                 }
997 993
             }
998
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
999
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $o[0]);
994
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
995
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $o[0]);
1000 996
             }
1001
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
1002
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $g[0]);
997
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
998
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $g[0]);
1003 999
             }
1004 1000
             foreach ($j as $kk => $v) {
1005 1001
                 foreach ($v->keymap as $kkk => $vv) {
1006
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
1002
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
1007 1003
                         $j[$kk]->keymap[$kkk] = preg_replace(
1008
-                            '(\b'.preg_quote($k . '.'). ')i',
1009
-                            $alias . '.',
1004
+                            '(\b'.preg_quote($k.'.').')i',
1005
+                            $alias.'.',
1010 1006
                             $vv
1011 1007
                         );
1012 1008
                     }
@@ -1015,12 +1011,12 @@  discard block
 block discarded – undo
1015 1011
         }
1016 1012
         $select = [];
1017 1013
         foreach ($f as $k => $field) {
1018
-            $select[] = $field . (!is_numeric($k) ? ' ' . $k : '');
1014
+            $select[] = $field.(!is_numeric($k) ? ' '.$k : '');
1019 1015
         }
1020 1016
         foreach ($this->withr as $name => $relation) {
1021 1017
             if ($relation[2]) {
1022 1018
                 foreach ($relation[0]->table->getColumns() as $column) {
1023
-                    $select[] = $getAlias($name) . '.' . $column . ' ' . $getAlias($name . static::SEP . $column);
1019
+                    $select[] = $getAlias($name).'.'.$column.' '.$getAlias($name.static::SEP.$column);
1024 1020
                 }
1025 1021
             }
1026 1022
         }
@@ -1041,13 +1037,13 @@  discard block
 block discarded – undo
1041 1037
                 foreach ($v->keymap as $kk => $vv) {
1042 1038
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1043 1039
                 }
1044
-                $sql .= implode(' AND ', $tmp) . ' ';
1040
+                $sql .= implode(' AND ', $tmp).' ';
1045 1041
                 $sql .= 'LEFT JOIN '.$v->table->getFullName().' '.$getAlias($relation).' ON ';
1046 1042
                 $tmp = [];
1047 1043
                 foreach ($v->pivot_keymap as $kk => $vv) {
1048 1044
                     $tmp[] = $getAlias($relation).'.'.$vv.' = '.$alias.'.'.$kk.' ';
1049 1045
                 }
1050
-                $sql .= implode(' AND ', $tmp) . ' ';
1046
+                $sql .= implode(' AND ', $tmp).' ';
1051 1047
             } else {
1052 1048
                 $alias = $getAlias($relation);
1053 1049
 
@@ -1057,22 +1053,22 @@  discard block
 block discarded – undo
1057 1053
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1058 1054
                 }
1059 1055
                 if ($v->sql) {
1060
-                    $tmp[] = $v->sql . ' ';
1056
+                    $tmp[] = $v->sql.' ';
1061 1057
                     $par = array_merge($par, $v->par ?? []);
1062 1058
                 }
1063
-                $sql .= implode(' AND ', $tmp) . ' ';
1059
+                $sql .= implode(' AND ', $tmp).' ';
1064 1060
             }
1065 1061
         }
1066 1062
         foreach ($j as $k => $v) {
1067 1063
             if ($v->many) {
1068 1064
                 $many = true;
1069 1065
             }
1070
-            $sql .= ($v->many ? 'LEFT ' : '' ) . 'JOIN '.$v->table->getFullName().' '.$k.' ON ';
1066
+            $sql .= ($v->many ? 'LEFT ' : '').'JOIN '.$v->table->getFullName().' '.$k.' ON ';
1071 1067
             $tmp = [];
1072 1068
             foreach ($v->keymap as $kk => $vv) {
1073 1069
                 $tmp[] = $kk.' = '.$vv;
1074 1070
             }
1075
-            $sql .= implode(' AND ', $tmp) . ' ';
1071
+            $sql .= implode(' AND ', $tmp).' ';
1076 1072
         }
1077 1073
         if ($many && count($porder) && $this->li_of[2] === 1) {
1078 1074
             $ids = $this->ids();
@@ -1080,9 +1076,9 @@  discard block
 block discarded – undo
1080 1076
                 if (count($porder) > 1) {
1081 1077
                     $pkw = [];
1082 1078
                     foreach ($porder as $name) {
1083
-                        $pkw[] = $name . ' = ?';
1079
+                        $pkw[] = $name.' = ?';
1084 1080
                     }
1085
-                    $pkw = '(' . implode(' AND ', $pkw) . ')';
1081
+                    $pkw = '('.implode(' AND ', $pkw).')';
1086 1082
                     $pkp = [];
1087 1083
                     foreach ($ids as $id) {
1088 1084
                         foreach ($id as $p) {
@@ -1094,60 +1090,60 @@  discard block
 block discarded – undo
1094 1090
                         $pkp
1095 1091
                     ];
1096 1092
                 } else {
1097
-                    $w[] = [ $porder[0] . ' IN ('.implode(',', array_fill(0, count($ids), '?')).')', $ids ];
1093
+                    $w[] = [$porder[0].' IN ('.implode(',', array_fill(0, count($ids), '?')).')', $ids];
1098 1094
                 }
1099 1095
             } else {
1100
-                $w[] = [ '1=0', [] ];
1096
+                $w[] = ['1=0', []];
1101 1097
             }
1102 1098
         }
1103 1099
         if (count($w)) {
1104 1100
             $sql .= 'WHERE ';
1105 1101
             $tmp = [];
1106 1102
             foreach ($w as $v) {
1107
-                $tmp[] = '(' . $v[0] . ')';
1103
+                $tmp[] = '('.$v[0].')';
1108 1104
                 $par = array_merge($par, $v[1]);
1109 1105
             }
1110 1106
             $sql .= implode(' AND ', $tmp).' ';
1111 1107
         }
1112 1108
         if (count($g)) {
1113
-            $sql .= 'GROUP BY ' . $g[0] . ' ';
1109
+            $sql .= 'GROUP BY '.$g[0].' ';
1114 1110
             $par = array_merge($par, $g[1]);
1115 1111
         }
1116 1112
         if (count($h)) {
1117 1113
             $sql .= 'HAVING ';
1118 1114
             $tmp = [];
1119 1115
             foreach ($h as $v) {
1120
-                $tmp[] = '(' . $v[0] . ')';
1116
+                $tmp[] = '('.$v[0].')';
1121 1117
                 $par = array_merge($par, $v[1]);
1122 1118
             }
1123 1119
             $sql .= implode(' AND ', $tmp).' ';
1124 1120
         }
1125 1121
         $ordered = false;
1126 1122
         if (count($o)) {
1127
-            $sql .= 'ORDER BY ' . $o[0] . ' ';
1123
+            $sql .= 'ORDER BY '.$o[0].' ';
1128 1124
             $par = array_merge($par, $o[1]);
1129 1125
             $ordered = true;
1130 1126
         }
1131 1127
         if (!count($g) && count($porder)) {
1132 1128
             $pdir = (count($o) && strpos($o[0], 'DESC') !== false) ? 'DESC' : 'ASC';
1133
-            $porder = array_map(function ($v) use ($pdir) {
1134
-                return $v . ' ' . $pdir;
1129
+            $porder = array_map(function($v) use ($pdir) {
1130
+                return $v.' '.$pdir;
1135 1131
             }, $porder);
1136
-            $sql .= ($ordered ? ', ' : 'ORDER BY ') . implode(', ', $porder) . ' ';
1132
+            $sql .= ($ordered ? ', ' : 'ORDER BY ').implode(', ', $porder).' ';
1137 1133
             $ordered = true;
1138 1134
         }
1139 1135
         foreach ($this->withr as $k => $v) {
1140 1136
             if (isset($v[3])) {
1141
-                $sql .= ($ordered ? ', ' : 'ORDER BY ') . $getAlias($k) . '.' . $v[3] . ' ' . ($v[4] ? 'DESC' : 'ASC');
1137
+                $sql .= ($ordered ? ', ' : 'ORDER BY ').$getAlias($k).'.'.$v[3].' '.($v[4] ? 'DESC' : 'ASC');
1142 1138
                 $ordered = true;
1143 1139
             }
1144 1140
         }
1145 1141
         if ((!$many || $this->li_of[2] === 0 || !count($porder)) && $this->li_of[0]) {
1146 1142
             if ($this->db->driverName() === 'oracle') {
1147
-                if ((int)$this->db->driverOption('version', 0) >= 12) {
1148
-                    $sql .= 'OFFSET ' . $this->li_of[1] . ' ROWS FETCH NEXT ' . $this->li_of[0] . ' ROWS ONLY';
1143
+                if ((int) $this->db->driverOption('version', 0) >= 12) {
1144
+                    $sql .= 'OFFSET '.$this->li_of[1].' ROWS FETCH NEXT '.$this->li_of[0].' ROWS ONLY';
1149 1145
                 } else {
1150
-                    $f = array_map(function ($v) {
1146
+                    $f = array_map(function($v) {
1151 1147
                         $v = explode(' ', trim($v), 2);
1152 1148
                         if (count($v) === 2) {
1153 1149
                             return $v[1];
@@ -1155,16 +1151,16 @@  discard block
 block discarded – undo
1155 1151
                         $v = explode('.', $v[0], 2);
1156 1152
                         return count($v) === 2 ? $v[1] : $v[0];
1157 1153
                     }, $select);
1158
-                    $sql = "SELECT " . implode(', ', $f) . "
1154
+                    $sql = "SELECT ".implode(', ', $f)."
1159 1155
                             FROM (
1160 1156
                                 SELECT tbl__.*, rownum rnum__ FROM (
1161
-                                    " . $sql . "
1157
+                                    " . $sql."
1162 1158
                                 ) tbl__
1163
-                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1]) . "
1159
+                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1])."
1164 1160
                             ) WHERE rnum__ > " . $this->li_of[1];
1165 1161
                 }
1166 1162
             } else {
1167
-                $sql .= 'LIMIT ' . $this->li_of[0] . ' OFFSET ' . $this->li_of[1];
1163
+                $sql .= 'LIMIT '.$this->li_of[0].' OFFSET '.$this->li_of[1];
1168 1164
             }
1169 1165
         }
1170 1166
         return $this->qiterator = new TableQueryIterator(
@@ -1214,12 +1210,12 @@  discard block
 block discarded – undo
1214 1210
                 $ret[$k] = str_repeat(' ', 255);
1215 1211
                 $par[] = &$ret[$k];
1216 1212
             }
1217
-            $sql .= ' RETURNING ' . implode(',', $primary) .
1218
-                ' INTO ' . implode(',', array_fill(0, count($primary), '?'));
1213
+            $sql .= ' RETURNING '.implode(',', $primary).
1214
+                ' INTO '.implode(',', array_fill(0, count($primary), '?'));
1219 1215
             $this->db->query($sql, $par);
1220 1216
             return $ret;
1221 1217
         } elseif ($this->db->driverName() === 'postgre') {
1222
-            $sql .= ' RETURNING ' . implode(',', $primary);
1218
+            $sql .= ' RETURNING '.implode(',', $primary);
1223 1219
             return $this->db->one($sql, $par, false);
1224 1220
         } else {
1225 1221
             $ret = [];
@@ -1250,9 +1246,9 @@  discard block
 block discarded – undo
1250 1246
         }
1251 1247
         $sql = 'UPDATE '.$table.' SET ';
1252 1248
         $par = [];
1253
-        $sql .= implode(', ', array_map(function ($v) {
1254
-            return $v . ' = ?';
1255
-        }, array_keys($update))) . ' ';
1249
+        $sql .= implode(', ', array_map(function($v) {
1250
+            return $v.' = ?';
1251
+        }, array_keys($update))).' ';
1256 1252
         $par = array_merge($par, array_values($update));
1257 1253
         if (count($this->where)) {
1258 1254
             $sql .= 'WHERE ';
@@ -1261,7 +1257,7 @@  discard block
 block discarded – undo
1261 1257
                 $tmp[] = $v[0];
1262 1258
                 $par = array_merge($par, $v[1]);
1263 1259
             }
1264
-            $sql .= implode(' AND ', $tmp) . ' ';
1260
+            $sql .= implode(' AND ', $tmp).' ';
1265 1261
         }
1266 1262
         if (count($this->order)) {
1267 1263
             $sql .= $this->order[0];
@@ -1285,7 +1281,7 @@  discard block
 block discarded – undo
1285 1281
                 $tmp[] = $v[0];
1286 1282
                 $par = array_merge($par, $v[1]);
1287 1283
             }
1288
-            $sql .= implode(' AND ', $tmp) . ' ';
1284
+            $sql .= implode(' AND ', $tmp).' ';
1289 1285
         }
1290 1286
         if (count($this->order)) {
1291 1287
             $sql .= $this->order[0];
@@ -1316,15 +1312,15 @@  discard block
 block discarded – undo
1316 1312
             try {
1317 1313
                 $name = array_reduce(
1318 1314
                     $parts,
1319
-                    function ($carry, $item) use (&$table, $select) {
1315
+                    function($carry, $item) use (&$table, $select) {
1320 1316
                         if (!$table->hasRelation($item)) {
1321
-                            throw new DBException('Invalid relation name: '.$table->getName().' -> ' . $item);
1317
+                            throw new DBException('Invalid relation name: '.$table->getName().' -> '.$item);
1322 1318
                         }
1323 1319
                         $relation = $table->getRelation($item);
1324 1320
                         if (!$relation) {
1325
-                            throw new DBException('Invalid relation name: '.$table->getName().' -> ' . $item);
1321
+                            throw new DBException('Invalid relation name: '.$table->getName().' -> '.$item);
1326 1322
                         }
1327
-                        $name = $carry ? $carry . static::SEP . $item : $item;
1323
+                        $name = $carry ? $carry.static::SEP.$item : $item;
1328 1324
                         $this->withr[$name] = [
1329 1325
                             $relation,
1330 1326
                             $carry ?? $table->getName(),
@@ -1393,9 +1389,9 @@  discard block
 block discarded – undo
1393 1389
 
1394 1390
         $aliases = [];
1395 1391
         $aliases_ext = [];
1396
-        $getAlias = function ($name) use (&$aliases, &$aliases_ext) {
1392
+        $getAlias = function($name) use (&$aliases, &$aliases_ext) {
1397 1393
             // to bypass use: return $name;
1398
-            $aliases[$name] = $aliases[$name] ?? 'alias' . static::SEP . count($aliases);
1394
+            $aliases[$name] = $aliases[$name] ?? 'alias'.static::SEP.count($aliases);
1399 1395
             if (isset($aliases_ext[$name])) {
1400 1396
                 unset($aliases_ext[$name]);
1401 1397
             }
@@ -1415,7 +1411,7 @@  discard block
 block discarded – undo
1415 1411
         $w = $this->where;
1416 1412
         $h = $this->having;
1417 1413
         $o = $this->order;
1418
-        $j = array_map(function ($v) {
1414
+        $j = array_map(function($v) {
1419 1415
             return clone $v;
1420 1416
         }, $this->joins);
1421 1417
 
@@ -1424,24 +1420,24 @@  discard block
 block discarded – undo
1424 1420
                 continue;
1425 1421
             }
1426 1422
             foreach ($w as $kk => $v) {
1427
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1428
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
1423
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1424
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
1429 1425
                 }
1430 1426
             }
1431 1427
             foreach ($h as $kk => $v) {
1432
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1433
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
1428
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1429
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
1434 1430
                 }
1435 1431
             }
1436
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
1437
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
1432
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
1433
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
1438 1434
             }
1439 1435
             foreach ($j as $kk => $v) {
1440 1436
                 foreach ($v->keymap as $kkk => $vv) {
1441
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
1437
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
1442 1438
                         $j[$kk]->keymap[$kkk] = preg_replace(
1443
-                            '(\b'.preg_quote($k . '.'). ')i',
1444
-                            $getAlias($k) . '.',
1439
+                            '(\b'.preg_quote($k.'.').')i',
1440
+                            $getAlias($k).'.',
1445 1441
                             $vv
1446 1442
                         );
1447 1443
                     }
@@ -1450,52 +1446,52 @@  discard block
 block discarded – undo
1450 1446
         }
1451 1447
         foreach ($this->definition->getRelations() as $k => $v) {
1452 1448
             foreach ($w as $kk => $vv) {
1453
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
1454
-                    $relations[$k] = [ $v, $table ];
1455
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
1449
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
1450
+                    $relations[$k] = [$v, $table];
1451
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
1456 1452
                 }
1457 1453
             }
1458
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
1459
-                $relations[$k] = [ $v, $table ];
1460
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
1461
-                $o[2] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[2]);
1454
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
1455
+                $relations[$k] = [$v, $table];
1456
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
1457
+                $o[2] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[2]);
1462 1458
             }
1463 1459
             foreach ($h as $kk => $vv) {
1464
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
1465
-                    $relations[$k] = [ $v, $table ];
1466
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
1460
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
1461
+                    $relations[$k] = [$v, $table];
1462
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
1467 1463
                 }
1468 1464
             }
1469 1465
             foreach ($j as $kk => $vv) {
1470 1466
                 foreach ($vv->keymap as $kkk => $vvv) {
1471
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vvv)) {
1472
-                        $relations[$k] = [ $v, $table ];
1467
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vvv)) {
1468
+                        $relations[$k] = [$v, $table];
1473 1469
                         $j[$kk]->keymap[$kkk] =
1474
-                            preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vvv);
1470
+                            preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vvv);
1475 1471
                     }
1476 1472
                 }
1477 1473
             }
1478 1474
         }
1479 1475
         foreach ($aliases_ext as $k => $alias) {
1480 1476
             foreach ($w as $kk => $v) {
1481
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1482
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
1477
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1478
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
1483 1479
                 }
1484 1480
             }
1485 1481
             foreach ($h as $kk => $v) {
1486
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
1487
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $v[0]);
1482
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
1483
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $v[0]);
1488 1484
                 }
1489 1485
             }
1490
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
1491
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $alias . '.', $o[0]);
1486
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
1487
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $alias.'.', $o[0]);
1492 1488
             }
1493 1489
             foreach ($j as $kk => $v) {
1494 1490
                 foreach ($v->keymap as $kkk => $vv) {
1495
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
1491
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
1496 1492
                         $j[$kk]->keymap[$kkk] = preg_replace(
1497
-                            '(\b'.preg_quote($k . '.'). ')i',
1498
-                            $alias . '.',
1493
+                            '(\b'.preg_quote($k.'.').')i',
1494
+                            $alias.'.',
1499 1495
                             $vv
1500 1496
                         );
1501 1497
                     }
@@ -1503,29 +1499,29 @@  discard block
 block discarded – undo
1503 1499
             }
1504 1500
         }
1505 1501
 
1506
-        $key = array_map(function ($v) use ($table) {
1507
-            return $table . '.' . $v;
1502
+        $key = array_map(function($v) use ($table) {
1503
+            return $table.'.'.$v;
1508 1504
         }, $this->pkey);
1509 1505
         $own = false;
1510 1506
         $dir = 'ASC';
1511 1507
         if (count($o)) {
1512 1508
             $dir = strpos($o[0], ' DESC') ? 'DESC' : 'ASC';
1513
-            $own = strpos($o[2], $table . '.') === 0;
1509
+            $own = strpos($o[2], $table.'.') === 0;
1514 1510
         }
1515 1511
 
1516 1512
         $dst = $key;
1517 1513
         if (count($o)) {
1518 1514
             if ($own) {
1519 1515
                 // if using own table - do not use max/min in order - that will prevent index usage
1520
-                $dst[] = $o[2] . ' orderbyfix___';
1516
+                $dst[] = $o[2].' orderbyfix___';
1521 1517
             } else {
1522
-                $dst[] = 'MAX(' . $o[2] . ') orderbyfix___';
1518
+                $dst[] = 'MAX('.$o[2].') orderbyfix___';
1523 1519
             }
1524 1520
         }
1525 1521
         $dst = array_unique($dst);
1526 1522
 
1527 1523
         $par = [];
1528
-        $sql  = 'SELECT DISTINCT '.implode(', ', $dst).' FROM '.$this->definition->getFullName().' ';
1524
+        $sql = 'SELECT DISTINCT '.implode(', ', $dst).' FROM '.$this->definition->getFullName().' ';
1529 1525
         foreach ($relations as $k => $v) {
1530 1526
             $table = $v[1] !== $this->definition->getName() ? $getAlias($v[1]) : $v[1];
1531 1527
             $v = $v[0];
@@ -1536,13 +1532,13 @@  discard block
 block discarded – undo
1536 1532
                 foreach ($v->keymap as $kk => $vv) {
1537 1533
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1538 1534
                 }
1539
-                $sql .= implode(' AND ', $tmp) . ' ';
1535
+                $sql .= implode(' AND ', $tmp).' ';
1540 1536
                 $sql .= 'LEFT JOIN '.$v->table->getFullName().' '.$getAlias($k).' ON ';
1541 1537
                 $tmp = [];
1542 1538
                 foreach ($v->pivot_keymap as $kk => $vv) {
1543 1539
                     $tmp[] = $getAlias($k).'.'.$vv.' = '.$alias.'.'.$kk.' ';
1544 1540
                 }
1545
-                $sql .= implode(' AND ', $tmp) . ' ';
1541
+                $sql .= implode(' AND ', $tmp).' ';
1546 1542
             } else {
1547 1543
                 $alias = $getAlias($k);
1548 1544
                 $sql .= 'LEFT JOIN '.$v->table->getFullName().' '.$alias.' ON ';
@@ -1551,37 +1547,37 @@  discard block
 block discarded – undo
1551 1547
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1552 1548
                 }
1553 1549
                 if ($v->sql) {
1554
-                    $tmp[] = $v->sql . ' ';
1550
+                    $tmp[] = $v->sql.' ';
1555 1551
                     $par = array_merge($par, $v->par ?? []);
1556 1552
                 }
1557
-                $sql .= implode(' AND ', $tmp) . ' ';
1553
+                $sql .= implode(' AND ', $tmp).' ';
1558 1554
             }
1559 1555
         }
1560 1556
         foreach ($j as $k => $v) {
1561
-            $sql .= ($v->many ? 'LEFT ' : '' ) . 'JOIN '.$v->table->getFullName().' '.$k.' ON ';
1557
+            $sql .= ($v->many ? 'LEFT ' : '').'JOIN '.$v->table->getFullName().' '.$k.' ON ';
1562 1558
             $tmp = [];
1563 1559
             foreach ($v->keymap as $kk => $vv) {
1564 1560
                 $tmp[] = $kk.' = '.$vv;
1565 1561
             }
1566
-            $sql .= implode(' AND ', $tmp) . ' ';
1562
+            $sql .= implode(' AND ', $tmp).' ';
1567 1563
         }
1568 1564
         if (count($w)) {
1569 1565
             $sql .= 'WHERE ';
1570 1566
             $tmp = [];
1571 1567
             foreach ($w as $v) {
1572
-                $tmp[] = '(' . $v[0] . ')';
1568
+                $tmp[] = '('.$v[0].')';
1573 1569
                 $par = array_merge($par, $v[1]);
1574 1570
             }
1575 1571
             $sql .= implode(' AND ', $tmp).' ';
1576 1572
         }
1577 1573
         if (!$own) {
1578
-            $sql .= 'GROUP BY ' . implode(', ', $key) . ' ';
1574
+            $sql .= 'GROUP BY '.implode(', ', $key).' ';
1579 1575
         }
1580 1576
         if (count($h)) {
1581 1577
             $sql .= 'HAVING ';
1582 1578
             $tmp = [];
1583 1579
             foreach ($h as $v) {
1584
-                $tmp[] = '(' . $v[0] . ')';
1580
+                $tmp[] = '('.$v[0].')';
1585 1581
                 $par = array_merge($par, $v[1]);
1586 1582
             }
1587 1583
             $sql .= implode(' AND ', $tmp).' ';
@@ -1589,38 +1585,38 @@  discard block
 block discarded – undo
1589 1585
         if (count($o)) {
1590 1586
             $sql .= 'ORDER BY ';
1591 1587
             if ($own) {
1592
-                $sql .= $o[2] . ' ' . $dir;
1588
+                $sql .= $o[2].' '.$dir;
1593 1589
             } else {
1594
-                $sql .= 'MAX('.$o[2].') ' . $dir;
1590
+                $sql .= 'MAX('.$o[2].') '.$dir;
1595 1591
             }
1596 1592
         }
1597 1593
         $porder = [];
1598 1594
         $pdir = (count($o) && strpos($o[0], 'DESC') !== false) ? 'DESC' : 'ASC';
1599 1595
         foreach ($this->definition->getPrimaryKey() as $field) {
1600
-            $porder[] = $this->getColumn($field)['name'] . ' ' . $pdir;
1596
+            $porder[] = $this->getColumn($field)['name'].' '.$pdir;
1601 1597
         }
1602 1598
         if (count($porder)) {
1603
-            $sql .= (count($o) ? ', ' : 'ORDER BY ') . implode(', ', $porder) . ' ';
1599
+            $sql .= (count($o) ? ', ' : 'ORDER BY ').implode(', ', $porder).' ';
1604 1600
         }
1605 1601
 
1606 1602
         if ($this->li_of[0]) {
1607 1603
             if ($this->db->driverName() === 'oracle') {
1608
-                if ((int)$this->db->driverOption('version', 0) >= 12) {
1609
-                    $sql .= 'OFFSET ' . $this->li_of[1] . ' ROWS FETCH NEXT ' . $this->li_of[0] . ' ROWS ONLY';
1604
+                if ((int) $this->db->driverOption('version', 0) >= 12) {
1605
+                    $sql .= 'OFFSET '.$this->li_of[1].' ROWS FETCH NEXT '.$this->li_of[0].' ROWS ONLY';
1610 1606
                 } else {
1611
-                    $sql = "SELECT " . implode(', ', $dst) . "
1607
+                    $sql = "SELECT ".implode(', ', $dst)."
1612 1608
                             FROM (
1613 1609
                                 SELECT tbl__.*, rownum rnum__ FROM (
1614
-                                    " . $sql . "
1610
+                                    " . $sql."
1615 1611
                                 ) tbl__
1616
-                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1]) . "
1612
+                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1])."
1617 1613
                             ) WHERE rnum__ > " . $this->li_of[1];
1618 1614
                 }
1619 1615
             } else {
1620
-                $sql .= 'LIMIT ' . $this->li_of[0] . ' OFFSET ' . $this->li_of[1];
1616
+                $sql .= 'LIMIT '.$this->li_of[0].' OFFSET '.$this->li_of[1];
1621 1617
             }
1622 1618
         }
1623
-        return array_map(function ($v) {
1619
+        return array_map(function($v) {
1624 1620
             if (array_key_exists('orderbyfix___', $v)) {
1625 1621
                 unset($v['orderbyfix___']);
1626 1622
             }
Please login to merge, or discard this patch.