Completed
Push — master ( 8599f2...0a3588 )
by Ivan
02:41
created
src/schema/TableQuery.php 1 patch
Spacing   +185 added lines, -189 removed lines patch added patch discarded remove patch
@@ -44,7 +44,7 @@  discard block
 block discarded – undo
44 44
     /**
45 45
      * @var int[]
46 46
      */
47
-    protected $li_of = [0,0,0];
47
+    protected $li_of = [0, 0, 0];
48 48
     /**
49 49
      * @var array
50 50
      */
@@ -74,7 +74,7 @@  discard block
 block discarded – undo
74 74
     public function __construct(DBInterface $db, $table)
75 75
     {
76 76
         $this->db = $db;
77
-        $this->definition = $table instanceof Table ? $table : $this->db->definition((string)$table);
77
+        $this->definition = $table instanceof Table ? $table : $this->db->definition((string) $table);
78 78
         $primary = $this->definition->getPrimaryKey();
79 79
         $columns = $this->definition->getColumns();
80 80
         $this->pkey = count($primary) ? $primary : $columns;
@@ -97,7 +97,7 @@  discard block
 block discarded – undo
97 97
     {
98 98
         $column = explode('.', $column);
99 99
         if (count($column) === 1) {
100
-            $column = [ $this->definition->getName(), $column[0] ];
100
+            $column = [$this->definition->getName(), $column[0]];
101 101
             $col = $this->definition->getColumn($column[1]);
102 102
             if (!$col) {
103 103
                 throw new DBException('Invalid column name in own table');
@@ -120,7 +120,7 @@  discard block
 block discarded – undo
120 120
                         throw new DBException('Invalid column name in related table');
121 121
                     }
122 122
                 } else {
123
-                    throw new DBException('Invalid foreign table name: ' . implode(',', $column));
123
+                    throw new DBException('Invalid foreign table name: '.implode(',', $column));
124 124
                 }
125 125
             }
126 126
         } else {
@@ -129,19 +129,19 @@  discard block
 block discarded – undo
129 129
             $table = $this->definition;
130 130
             $table = array_reduce(
131 131
                 $column,
132
-                function ($carry, $item) use (&$table) {
132
+                function($carry, $item) use (&$table) {
133 133
                     $table = $table->getRelation($item)->table;
134 134
                     return $table;
135 135
                 }
136 136
             );
137 137
             $col = $table->getColumn($name);
138
-            $column = [ implode(static::SEP, $column), $name ];
138
+            $column = [implode(static::SEP, $column), $name];
139 139
         }
140
-        return [ 'name' => implode('.', $column), 'data' => $col ];
140
+        return ['name' => implode('.', $column), 'data' => $col];
141 141
     }
142 142
     protected function normalizeValue(TableColumn $col, $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,23 +201,23 @@  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 210
                 $temp = preg_replace('([^+\-0-9]+)', '', $value);
211
-                return is_string($temp) ? (int)$temp : 0;
211
+                return is_string($temp) ? (int) $temp : 0;
212 212
             case 'float':
213 213
                 $temp = preg_replace('([^+\-0-9.]+)', '', str_replace(',', '.', $value));
214
-                return is_string($temp) ? (float)$temp : 0;
214
+                return is_string($temp) ? (float) $temp : 0;
215 215
             case 'text':
216 216
                 // check using strlen first, in order to avoid hitting mb_ functions which might be polyfilled
217 217
                 // because the polyfill is quite slow
218 218
                 if ($col->hasLength() && strlen($value) > $col->getLength() && mb_strlen($value) > $col->getLength()) {
219 219
                     if ($strict) {
220
-                        throw new DBException('Invalid value for text column ' . $col->getName());
220
+                        throw new DBException('Invalid value for text column '.$col->getName());
221 221
                     }
222 222
                     return mb_substr($value, 0, $col->getLength());
223 223
                 }
@@ -239,35 +239,32 @@  discard block
 block discarded – undo
239 239
             // str_replace(['%', '_'], ['\\%','\\_'], $q)
240 240
             return $negate ?
241 241
                 [
242
-                    $name . ' NOT LIKE ?',
243
-                    [ $this->normalizeValue($column, $value) ]
244
-                ] :
245
-                [
246
-                    $name . ' LIKE ?',
247
-                    [ $this->normalizeValue($column, $value) ]
242
+                    $name.' NOT LIKE ?',
243
+                    [$this->normalizeValue($column, $value)]
244
+                ] : [
245
+                    $name.' LIKE ?',
246
+                    [$this->normalizeValue($column, $value)]
248 247
                 ];
249 248
         }
250 249
         if (is_null($value)) {
251 250
             return $negate ?
252
-                [ $name . ' IS NOT NULL', [] ]:
253
-                [ $name . ' IS NULL', [] ];
251
+                [$name.' IS NOT NULL', []] : [$name.' IS NULL', []];
254 252
         }
255 253
         if (!is_array($value)) {
256 254
             return $negate ?
257 255
                 [
258
-                    $name . ' <> ?',
259
-                    [ $this->normalizeValue($column, $value) ]
260
-                ] :
261
-                [
262
-                    $name . ' = ?',
263
-                    [ $this->normalizeValue($column, $value) ]
256
+                    $name.' <> ?',
257
+                    [$this->normalizeValue($column, $value)]
258
+                ] : [
259
+                    $name.' = ?',
260
+                    [$this->normalizeValue($column, $value)]
264 261
                 ];
265 262
         }
266 263
         if (isset($value['beg']) && strlen($value['beg']) && (!isset($value['end']) || !strlen($value['end']))) {
267
-            $value = [ 'gte' => $value['beg'] ];
264
+            $value = ['gte' => $value['beg']];
268 265
         }
269 266
         if (isset($value['end']) && strlen($value['end']) && (!isset($value['beg']) || !strlen($value['beg']))) {
270
-            $value = [ 'lte' => $value['end'] ];
267
+            $value = ['lte' => $value['end']];
271 268
         }
272 269
         if (isset($value['beg']) && isset($value['end'])) {
273 270
             return $negate ?
@@ -277,8 +274,7 @@  discard block
 block discarded – undo
277 274
                         $this->normalizeValue($column, $value['beg']),
278 275
                         $this->normalizeValue($column, $value['end'])
279 276
                     ]
280
-                ] :
281
-                [
277
+                ] : [
282 278
                     $name.' BETWEEN ? AND ?',
283 279
                     [
284 280
                         $this->normalizeValue($column, $value['beg']),
@@ -290,38 +286,38 @@  discard block
 block discarded – undo
290 286
             $sql = [];
291 287
             $par = [];
292 288
             if (isset($value['gt'])) {
293
-                $sql[] = $name. ' ' . ($negate ? '<=' : '>') . ' ?';
289
+                $sql[] = $name.' '.($negate ? '<=' : '>').' ?';
294 290
                 $par[] = $this->normalizeValue($column, $value['gt']);
295 291
             }
296 292
             if (isset($value['gte'])) {
297
-                $sql[] = $name. ' ' . ($negate ? '<' : '>=') . ' ?';
293
+                $sql[] = $name.' '.($negate ? '<' : '>=').' ?';
298 294
                 $par[] = $this->normalizeValue($column, $value['gte']);
299 295
             }
300 296
             if (isset($value['lt'])) {
301
-                $sql[] = $name. ' ' . ($negate ? '>=' : '<') . ' ?';
297
+                $sql[] = $name.' '.($negate ? '>=' : '<').' ?';
302 298
                 $par[] = $this->normalizeValue($column, $value['lt']);
303 299
             }
304 300
             if (isset($value['lte'])) {
305
-                $sql[] = $name. ' ' . ($negate ? '>' : '<=') . ' ?';
301
+                $sql[] = $name.' '.($negate ? '>' : '<=').' ?';
306 302
                 $par[] = $this->normalizeValue($column, $value['lte']);
307 303
             }
308 304
             return [
309
-                '(' . implode(' AND ', $sql) . ')',
305
+                '('.implode(' AND ', $sql).')',
310 306
                 $par
311 307
             ];
312 308
         }
313 309
         return $negate ?
314 310
             [
315
-                $name . ' NOT IN (??)',
316
-                [ array_map(function ($v) use ($column) {
311
+                $name.' NOT IN (??)',
312
+                [array_map(function($v) use ($column) {
317 313
                     return $this->normalizeValue($column, $v);
318
-                }, $value) ]
314
+                }, $value)]
319 315
             ] :
320 316
             [
321
-                $name . ' IN (??)',
322
-                [ array_map(function ($v) use ($column) {
317
+                $name.' IN (??)',
318
+                [array_map(function($v) use ($column) {
323 319
                     return $this->normalizeValue($column, $v);
324
-                }, $value) ]
320
+                }, $value)]
325 321
             ];
326 322
     }
327 323
     /**
@@ -352,7 +348,7 @@  discard block
 block discarded – undo
352 348
                 $par = array_merge($par, $temp[1]);
353 349
             }
354 350
         }
355
-        return $this->where('(' . implode(' OR ', $sql) . ')', $par);
351
+        return $this->where('('.implode(' OR ', $sql).')', $par);
356 352
     }
357 353
     /**
358 354
      * Filter the results matching all of the criteria
@@ -370,7 +366,7 @@  discard block
 block discarded – undo
370 366
                 $par = array_merge($par, $temp[1]);
371 367
             }
372 368
         }
373
-        return $this->where('(' . implode(' AND ', $sql) . ')', $par);
369
+        return $this->where('('.implode(' AND ', $sql).')', $par);
374 370
     }
375 371
     /**
376 372
      * Sort by a column
@@ -380,7 +376,7 @@  discard block
 block discarded – undo
380 376
      */
381 377
     public function sort(string $column, bool $desc = false) : self
382 378
     {
383
-        return $this->order($this->getColumn($column)['name'] . ' ' . ($desc ? 'DESC' : 'ASC'));
379
+        return $this->order($this->getColumn($column)['name'].' '.($desc ? 'DESC' : 'ASC'));
384 380
     }
385 381
     /**
386 382
      * Group by a column (or columns)
@@ -390,7 +386,7 @@  discard block
 block discarded – undo
390 386
     public function group($column) : self
391 387
     {
392 388
         if (!is_array($column)) {
393
-            $column = [ $column ];
389
+            $column = [$column];
394 390
         }
395 391
         foreach ($column as $k => $v) {
396 392
             $column[$k] = $this->getColumn($v)['name'];
@@ -432,7 +428,7 @@  discard block
 block discarded – undo
432 428
         $this->order = [];
433 429
         $this->having = [];
434 430
         $this->aliases = [];
435
-        $this->li_of = [0,0,0];
431
+        $this->li_of = [0, 0, 0];
436 432
         $this->qiterator = null;
437 433
         return $this;
438 434
     }
@@ -445,7 +441,7 @@  discard block
 block discarded – undo
445 441
     public function groupBy(string $sql, array $params = []) : self
446 442
     {
447 443
         $this->qiterator = null;
448
-        $this->group = [ $sql, $params ];
444
+        $this->group = [$sql, $params];
449 445
         return $this;
450 446
     }
451 447
     /**
@@ -458,7 +454,7 @@  discard block
 block discarded – undo
458 454
      */
459 455
     public function join($table, array $fields, string $name = null, bool $multiple = true)
460 456
     {
461
-        $table = $table instanceof Table ? $table : $this->db->definition((string)$table);
457
+        $table = $table instanceof Table ? $table : $this->db->definition((string) $table);
462 458
         $name = $name ?? $table->getName();
463 459
         if (isset($this->joins[$name]) || $this->definition->hasRelation($name)) {
464 460
             throw new DBException('Alias / table name already in use');
@@ -467,7 +463,7 @@  discard block
 block discarded – undo
467 463
         foreach ($fields as $k => $v) {
468 464
             $k = explode('.', $k, 2);
469 465
             $k = count($k) == 2 ? $k[1] : $k[0];
470
-            $this->joins[$name]->keymap[$this->getColumn($name . '.' . $k)['name']] = $this->getColumn($v)['name'];
466
+            $this->joins[$name]->keymap[$this->getColumn($name.'.'.$k)['name']] = $this->getColumn($v)['name'];
471 467
         }
472 468
         return $this;
473 469
     }
@@ -480,7 +476,7 @@  discard block
 block discarded – undo
480 476
     public function where(string $sql, array $params = []) : self
481 477
     {
482 478
         $this->qiterator = null;
483
-        $this->where[] = [ $sql, $params ];
479
+        $this->where[] = [$sql, $params];
484 480
         return $this;
485 481
     }
486 482
     /**
@@ -492,7 +488,7 @@  discard block
 block discarded – undo
492 488
     public function having(string $sql, array $params = []) : self
493 489
     {
494 490
         $this->qiterator = null;
495
-        $this->having[] = [ $sql, $params ];
491
+        $this->having[] = [$sql, $params];
496 492
         return $this;
497 493
     }
498 494
     /**
@@ -516,7 +512,7 @@  discard block
 block discarded – undo
516 512
                 $name = null;
517 513
             }
518 514
         }
519
-        $this->order = [ $sql, $params, $name ];
515
+        $this->order = [$sql, $params, $name];
520 516
         return $this;
521 517
     }
522 518
     /**
@@ -528,7 +524,7 @@  discard block
 block discarded – undo
528 524
     public function limit(int $limit, int $offset = 0, bool $limitOnMainTable = false) : self
529 525
     {
530 526
         $this->qiterator = null;
531
-        $this->li_of = [ $limit, $offset, $limitOnMainTable ? 1 : 0 ];
527
+        $this->li_of = [$limit, $offset, $limitOnMainTable ? 1 : 0];
532 528
         return $this;
533 529
     }
534 530
     /**
@@ -538,9 +534,9 @@  discard block
 block discarded – undo
538 534
     public function count() : int
539 535
     {
540 536
         $aliases = [];
541
-        $getAlias = function ($name) use (&$aliases) {
537
+        $getAlias = function($name) use (&$aliases) {
542 538
             // to bypass use: return $name;
543
-            return $aliases[$name] = $aliases[$name] ?? 'alias' . static::SEP . count($aliases);
539
+            return $aliases[$name] = $aliases[$name] ?? 'alias'.static::SEP.count($aliases);
544 540
         };
545 541
         $table = $this->definition->getName();
546 542
         $sql = 'SELECT COUNT(DISTINCT '.$table.'.'.implode(', '.$table.'.', $this->pkey).') FROM '.$table.' ';
@@ -554,35 +550,35 @@  discard block
 block discarded – undo
554 550
         $h = $this->having;
555 551
         $o = $this->order;
556 552
         $g = $this->group;
557
-        $j = array_map(function ($v) {
553
+        $j = array_map(function($v) {
558 554
             return clone $v;
559 555
         }, $this->joins);
560 556
         foreach ($this->definition->getRelations() as $k => $v) {
561 557
             foreach ($w as $kk => $vv) {
562
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
563
-                    $relations[$k] = [ $v, $table ];
564
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
558
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
559
+                    $relations[$k] = [$v, $table];
560
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
565 561
                 }
566 562
             }
567
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
568
-                $relations[$k] = [ $v, $table ];
563
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
564
+                $relations[$k] = [$v, $table];
569 565
             }
570 566
             foreach ($h as $kk => $vv) {
571
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
572
-                    $relations[$k] = [ $v, $table ];
573
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
567
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
568
+                    $relations[$k] = [$v, $table];
569
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
574 570
                 }
575 571
             }
576
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
577
-                $relations[$k] = [ $v, $table ];
578
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
572
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
573
+                $relations[$k] = [$v, $table];
574
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
579 575
             }
580 576
             foreach ($j as $kk => $vv) {
581 577
                 foreach ($vv->keymap as $kkk => $vvv) {
582
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vvv)) {
583
-                        $relations[$k] = [ $v, $table ];
578
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vvv)) {
579
+                        $relations[$k] = [$v, $table];
584 580
                         $j[$kk]->keymap[$kkk] =
585
-                            preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vvv);
581
+                            preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vvv);
586 582
                     }
587 583
                 }
588 584
             }
@@ -598,13 +594,13 @@  discard block
 block discarded – undo
598 594
                 foreach ($v->keymap as $kk => $vv) {
599 595
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
600 596
                 }
601
-                $sql .= implode(' AND ', $tmp) . ' ';
597
+                $sql .= implode(' AND ', $tmp).' ';
602 598
                 $sql .= 'LEFT JOIN '.$v->table->getName().' '.$getAlias($k).' ON ';
603 599
                 $tmp = [];
604 600
                 foreach ($v->pivot_keymap as $kk => $vv) {
605 601
                     $tmp[] = $getAlias($k).'.'.$vv.' = '.$alias.'.'.$kk.' ';
606 602
                 }
607
-                $sql .= implode(' AND ', $tmp) . ' ';
603
+                $sql .= implode(' AND ', $tmp).' ';
608 604
             } else {
609 605
                 $alias = $getAlias($k);
610 606
                 $sql .= 'LEFT JOIN '.$v->table->getName().' '.$alias.' ON ';
@@ -613,38 +609,38 @@  discard block
 block discarded – undo
613 609
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
614 610
                 }
615 611
                 if ($v->sql) {
616
-                    $tmp[] = $v->sql . ' ';
612
+                    $tmp[] = $v->sql.' ';
617 613
                     $par = array_merge($par, $v->par ?? []);
618 614
                 }
619
-                $sql .= implode(' AND ', $tmp) . ' ';
615
+                $sql .= implode(' AND ', $tmp).' ';
620 616
             }
621 617
         }
622 618
         foreach ($j as $k => $v) {
623
-            $sql .= ($v->many ? 'LEFT ' : '' ) . 'JOIN '.$v->table->getName().' '.$k.' ON ';
619
+            $sql .= ($v->many ? 'LEFT ' : '').'JOIN '.$v->table->getName().' '.$k.' ON ';
624 620
             $tmp = [];
625 621
             foreach ($v->keymap as $kk => $vv) {
626 622
                 $tmp[] = $kk.' = '.$vv;
627 623
             }
628
-            $sql .= implode(' AND ', $tmp) . ' ';
624
+            $sql .= implode(' AND ', $tmp).' ';
629 625
         }
630 626
         if (count($w)) {
631 627
             $sql .= 'WHERE ';
632 628
             $tmp = [];
633 629
             foreach ($w as $v) {
634
-                $tmp[] = '(' . $v[0] . ')';
630
+                $tmp[] = '('.$v[0].')';
635 631
                 $par = array_merge($par, $v[1]);
636 632
             }
637 633
             $sql .= implode(' AND ', $tmp).' ';
638 634
         }
639 635
         if (count($g)) {
640
-            $sql .= 'GROUP BY ' . $g[0] . ' ';
636
+            $sql .= 'GROUP BY '.$g[0].' ';
641 637
             $par = array_merge($par, $g[1]);
642 638
         }
643 639
         if (count($h)) {
644 640
             $sql .= 'HAVING ';
645 641
             $tmp = [];
646 642
             foreach ($h as $v) {
647
-                $tmp[] = '(' . $v[0] . ')';
643
+                $tmp[] = '('.$v[0].')';
648 644
                 $par = array_merge($par, $v[1]);
649 645
             }
650 646
             $sql .= implode(' AND ', $tmp).' ';
@@ -678,7 +674,7 @@  discard block
 block discarded – undo
678 674
                     $this->with(implode('.', $temp));
679 675
                     $table = array_reduce(
680 676
                         $temp,
681
-                        function ($carry, $item) use (&$table) {
677
+                        function($carry, $item) use (&$table) {
682 678
                             return $table->getRelation($item)->table;
683 679
                         }
684 680
                     );
@@ -687,7 +683,7 @@  discard block
 block discarded – undo
687 683
                 }
688 684
                 unset($fields[$k]);
689 685
                 foreach ($cols as $col) {
690
-                    $fields[] = $table . '.' . $col;
686
+                    $fields[] = $table.'.'.$col;
691 687
                 }
692 688
             }
693 689
         }
@@ -719,9 +715,9 @@  discard block
 block discarded – undo
719 715
             return $this->qiterator;
720 716
         }
721 717
         $aliases = [];
722
-        $getAlias = function ($name) use (&$aliases) {
718
+        $getAlias = function($name) use (&$aliases) {
723 719
             // to bypass use: return $name;
724
-            return $aliases[$name] = $aliases[$name] ?? 'alias' . static::SEP . count($aliases);
720
+            return $aliases[$name] = $aliases[$name] ?? 'alias'.static::SEP.count($aliases);
725 721
         };
726 722
         $table = $this->definition->getName();
727 723
         if ($fields !== null) {
@@ -737,7 +733,7 @@  discard block
 block discarded – undo
737 733
         $h = $this->having;
738 734
         $o = $this->order;
739 735
         $g = $this->group;
740
-        $j = array_map(function ($v) {
736
+        $j = array_map(function($v) {
741 737
             return clone $v;
742 738
         }, $this->joins);
743 739
 
@@ -748,38 +744,38 @@  discard block
 block discarded – undo
748 744
 
749 745
         foreach ($this->definition->getRelations() as $k => $relation) {
750 746
             foreach ($f as $kk => $field) {
751
-                if (strpos($field, $k . '.') === 0) {
752
-                    $relations[$k] = [ $relation, $table ];
753
-                    $f[$kk] = str_replace($k . '.', $getAlias($k) . '.', $field);
747
+                if (strpos($field, $k.'.') === 0) {
748
+                    $relations[$k] = [$relation, $table];
749
+                    $f[$kk] = str_replace($k.'.', $getAlias($k).'.', $field);
754 750
                 }
755 751
             }
756 752
             foreach ($w as $kk => $v) {
757
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
758
-                    $relations[$k] = [ $relation, $table ];
759
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
753
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
754
+                    $relations[$k] = [$relation, $table];
755
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
760 756
                 }
761 757
             }
762 758
             foreach ($h as $kk => $v) {
763
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
764
-                    $relations[$k] = [ $relation, $table ];
765
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
759
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
760
+                    $relations[$k] = [$relation, $table];
761
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
766 762
                 }
767 763
             }
768
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
769
-                $relations[$k] = [ $relation, $table ];
770
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
764
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
765
+                $relations[$k] = [$relation, $table];
766
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
771 767
             }
772
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
773
-                $relations[$k] = [ $relation, $table ];
774
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
768
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
769
+                $relations[$k] = [$relation, $table];
770
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
775 771
             }
776 772
             foreach ($j as $kk => $v) {
777 773
                 foreach ($v->keymap as $kkk => $vv) {
778
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
779
-                        $relations[$k] = [ $relation, $table ];
774
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
775
+                        $relations[$k] = [$relation, $table];
780 776
                         $j[$kk]->keymap[$kkk] = preg_replace(
781
-                            '(\b'.preg_quote($k . '.'). ')i',
782
-                            $getAlias($k) . '.',
777
+                            '(\b'.preg_quote($k.'.').')i',
778
+                            $getAlias($k).'.',
783 779
                             $vv
784 780
                         );
785 781
                     }
@@ -788,11 +784,11 @@  discard block
 block discarded – undo
788 784
         }
789 785
         $select = [];
790 786
         foreach ($f as $k => $field) {
791
-            $select[] = $field . (!is_numeric($k) ? ' ' . $k : '');
787
+            $select[] = $field.(!is_numeric($k) ? ' '.$k : '');
792 788
         }
793 789
         foreach ($this->withr as $name => $relation) {
794 790
             foreach ($relation[0]->table->getColumns() as $column) {
795
-                $select[] = $getAlias($name) . '.' . $column . ' ' . $getAlias($name . static::SEP . $column);
791
+                $select[] = $getAlias($name).'.'.$column.' '.$getAlias($name.static::SEP.$column);
796 792
             }
797 793
         }
798 794
         $sql = 'SELECT '.implode(', ', $select).' FROM '.$table.' ';
@@ -811,13 +807,13 @@  discard block
 block discarded – undo
811 807
                 foreach ($v->keymap as $kk => $vv) {
812 808
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
813 809
                 }
814
-                $sql .= implode(' AND ', $tmp) . ' ';
810
+                $sql .= implode(' AND ', $tmp).' ';
815 811
                 $sql .= 'LEFT JOIN '.$v->table->getName().' '.$getAlias($relation).' ON ';
816 812
                 $tmp = [];
817 813
                 foreach ($v->pivot_keymap as $kk => $vv) {
818 814
                     $tmp[] = $getAlias($relation).'.'.$vv.' = '.$alias.'.'.$kk.' ';
819 815
                 }
820
-                $sql .= implode(' AND ', $tmp) . ' ';
816
+                $sql .= implode(' AND ', $tmp).' ';
821 817
             } else {
822 818
                 $alias = $getAlias($relation);
823 819
 
@@ -827,22 +823,22 @@  discard block
 block discarded – undo
827 823
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
828 824
                 }
829 825
                 if ($v->sql) {
830
-                    $tmp[] = $v->sql . ' ';
826
+                    $tmp[] = $v->sql.' ';
831 827
                     $par = array_merge($par, $v->par ?? []);
832 828
                 }
833
-                $sql .= implode(' AND ', $tmp) . ' ';
829
+                $sql .= implode(' AND ', $tmp).' ';
834 830
             }
835 831
         }
836 832
         foreach ($j as $k => $v) {
837 833
             if ($v->many) {
838 834
                 $many = true;
839 835
             }
840
-            $sql .= ($v->many ? 'LEFT ' : '' ) . 'JOIN '.$v->table->getName().' '.$k.' ON ';
836
+            $sql .= ($v->many ? 'LEFT ' : '').'JOIN '.$v->table->getName().' '.$k.' ON ';
841 837
             $tmp = [];
842 838
             foreach ($v->keymap as $kk => $vv) {
843 839
                 $tmp[] = $kk.' = '.$vv;
844 840
             }
845
-            $sql .= implode(' AND ', $tmp) . ' ';
841
+            $sql .= implode(' AND ', $tmp).' ';
846 842
         }
847 843
         if ($many && count($porder) && $this->li_of[2] === 1) {
848 844
             $ids = $this->ids();
@@ -850,9 +846,9 @@  discard block
 block discarded – undo
850 846
                 if (count($porder) > 1) {
851 847
                     $pkw = [];
852 848
                     foreach ($porder as $name) {
853
-                        $pkw[] = $name . ' = ?';
849
+                        $pkw[] = $name.' = ?';
854 850
                     }
855
-                    $pkw = '(' . implode(' AND ', $pkw) . ')';
851
+                    $pkw = '('.implode(' AND ', $pkw).')';
856 852
                     $pkp = [];
857 853
                     foreach ($ids as $id) {
858 854
                         foreach ($id as $p) {
@@ -864,51 +860,51 @@  discard block
 block discarded – undo
864 860
                         $pkp
865 861
                     ];
866 862
                 } else {
867
-                    $w[] = [ $porder[0] . ' IN ('.implode(',', array_fill(0, count($ids), '?')).')', $ids ];
863
+                    $w[] = [$porder[0].' IN ('.implode(',', array_fill(0, count($ids), '?')).')', $ids];
868 864
                 }
869 865
             } else {
870
-                $w[] = [ '1=0', [] ];
866
+                $w[] = ['1=0', []];
871 867
             }
872 868
         }
873 869
         if (count($w)) {
874 870
             $sql .= 'WHERE ';
875 871
             $tmp = [];
876 872
             foreach ($w as $v) {
877
-                $tmp[] = '(' . $v[0] . ')';
873
+                $tmp[] = '('.$v[0].')';
878 874
                 $par = array_merge($par, $v[1]);
879 875
             }
880 876
             $sql .= implode(' AND ', $tmp).' ';
881 877
         }
882 878
         if (count($g)) {
883
-            $sql .= 'GROUP BY ' . $g[0] . ' ';
879
+            $sql .= 'GROUP BY '.$g[0].' ';
884 880
             $par = array_merge($par, $g[1]);
885 881
         }
886 882
         if (count($h)) {
887 883
             $sql .= 'HAVING ';
888 884
             $tmp = [];
889 885
             foreach ($h as $v) {
890
-                $tmp[] = '(' . $v[0] . ')';
886
+                $tmp[] = '('.$v[0].')';
891 887
                 $par = array_merge($par, $v[1]);
892 888
             }
893 889
             $sql .= implode(' AND ', $tmp).' ';
894 890
         }
895 891
         if (count($o)) {
896
-            $sql .= 'ORDER BY ' . $o[0] . ' ';
892
+            $sql .= 'ORDER BY '.$o[0].' ';
897 893
             $par = array_merge($par, $o[1]);
898 894
         }
899 895
         if (count($porder)) {
900 896
             $pdir = (count($o) && strpos($o[0], 'DESC') !== false) ? 'DESC' : 'ASC';
901
-            $porder = array_map(function ($v) use ($pdir) {
902
-                return $v . ' ' . $pdir;
897
+            $porder = array_map(function($v) use ($pdir) {
898
+                return $v.' '.$pdir;
903 899
             }, $porder);
904
-            $sql .= (count($o) ? ', ' : 'ORDER BY ') . implode(', ', $porder) . ' ';
900
+            $sql .= (count($o) ? ', ' : 'ORDER BY ').implode(', ', $porder).' ';
905 901
         }
906 902
         if ((!$many || $this->li_of[2] === 0 || !count($porder)) && $this->li_of[0]) {
907 903
             if ($this->db->driverName() === 'oracle') {
908
-                if ((int)$this->db->driverOption('version', 0) >= 12) {
909
-                    $sql .= 'OFFSET ' . $this->li_of[1] . ' ROWS FETCH NEXT ' . $this->li_of[0] . ' ROWS ONLY';
904
+                if ((int) $this->db->driverOption('version', 0) >= 12) {
905
+                    $sql .= 'OFFSET '.$this->li_of[1].' ROWS FETCH NEXT '.$this->li_of[0].' ROWS ONLY';
910 906
                 } else {
911
-                    $f = array_map(function ($v) {
907
+                    $f = array_map(function($v) {
912 908
                         $v = explode(' ', trim($v), 2);
913 909
                         if (count($v) === 2) {
914 910
                             return $v[1];
@@ -916,16 +912,16 @@  discard block
 block discarded – undo
916 912
                         $v = explode('.', $v[0], 2);
917 913
                         return count($v) === 2 ? $v[1] : $v[0];
918 914
                     }, $select);
919
-                    $sql = "SELECT " . implode(', ', $f) . " 
915
+                    $sql = "SELECT ".implode(', ', $f)." 
920 916
                             FROM (
921 917
                                 SELECT tbl__.*, rownum rnum__ FROM (
922
-                                    " . $sql . "
918
+                                    " . $sql."
923 919
                                 ) tbl__ 
924
-                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1]) . "
920
+                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1])."
925 921
                             ) WHERE rnum__ > " . $this->li_of[1];
926 922
                 }
927 923
             } else {
928
-                $sql .= 'LIMIT ' . $this->li_of[0] . ' OFFSET ' . $this->li_of[1];
924
+                $sql .= 'LIMIT '.$this->li_of[0].' OFFSET '.$this->li_of[1];
929 925
             }
930 926
         }
931 927
         return $this->qiterator = new TableQueryIterator(
@@ -975,8 +971,8 @@  discard block
 block discarded – undo
975 971
                 $ret[$k] = str_repeat(' ', 255);
976 972
                 $par[] = &$ret[$k];
977 973
             }
978
-            $sql .= ' RETURNING ' . implode(',', $primary) .
979
-                ' INTO ' . implode(',', array_fill(0, count($primary), '?'));
974
+            $sql .= ' RETURNING '.implode(',', $primary).
975
+                ' INTO '.implode(',', array_fill(0, count($primary), '?'));
980 976
             $this->db->query($sql, $par);
981 977
             return $ret;
982 978
         } else {
@@ -1008,9 +1004,9 @@  discard block
 block discarded – undo
1008 1004
         }
1009 1005
         $sql = 'UPDATE '.$table.' SET ';
1010 1006
         $par = [];
1011
-        $sql .= implode(', ', array_map(function ($v) {
1012
-            return $v . ' = ?';
1013
-        }, array_keys($update))) . ' ';
1007
+        $sql .= implode(', ', array_map(function($v) {
1008
+            return $v.' = ?';
1009
+        }, array_keys($update))).' ';
1014 1010
         $par = array_merge($par, array_values($update));
1015 1011
         if (count($this->where)) {
1016 1012
             $sql .= 'WHERE ';
@@ -1019,7 +1015,7 @@  discard block
 block discarded – undo
1019 1015
                 $tmp[] = $v[0];
1020 1016
                 $par = array_merge($par, $v[1]);
1021 1017
             }
1022
-            $sql .= implode(' AND ', $tmp) . ' ';
1018
+            $sql .= implode(' AND ', $tmp).' ';
1023 1019
         }
1024 1020
         if (count($this->order)) {
1025 1021
             $sql .= $this->order[0];
@@ -1043,7 +1039,7 @@  discard block
 block discarded – undo
1043 1039
                 $tmp[] = $v[0];
1044 1040
                 $par = array_merge($par, $v[1]);
1045 1041
             }
1046
-            $sql .= implode(' AND ', $tmp) . ' ';
1042
+            $sql .= implode(' AND ', $tmp).' ';
1047 1043
         }
1048 1044
         if (count($this->order)) {
1049 1045
             $sql .= $this->order[0];
@@ -1063,13 +1059,13 @@  discard block
 block discarded – undo
1063 1059
         $table = $this->definition;
1064 1060
         array_reduce(
1065 1061
             $parts,
1066
-            function ($carry, $item) use (&$table) {
1062
+            function($carry, $item) use (&$table) {
1067 1063
                 if (!$table->hasRelation($item)) {
1068 1064
                     throw new DBException('Invalid relation name');
1069 1065
                 }
1070 1066
                 $relation = $table->getRelation($item);
1071
-                $name = $carry ? $carry . static::SEP . $item : $item;
1072
-                $this->withr[$name] = [ $relation, $carry ?? $table->getName() ];
1067
+                $name = $carry ? $carry.static::SEP.$item : $item;
1068
+                $this->withr[$name] = [$relation, $carry ?? $table->getName()];
1073 1069
                 $table = $relation->table;
1074 1070
                 return $name;
1075 1071
             }
@@ -1114,9 +1110,9 @@  discard block
 block discarded – undo
1114 1110
         }
1115 1111
 
1116 1112
         $aliases = [];
1117
-        $getAlias = function ($name) use (&$aliases) {
1113
+        $getAlias = function($name) use (&$aliases) {
1118 1114
             // to bypass use: return $name;
1119
-            return $aliases[$name] = $aliases[$name] ?? 'alias' . static::SEP . count($aliases);
1115
+            return $aliases[$name] = $aliases[$name] ?? 'alias'.static::SEP.count($aliases);
1120 1116
         };
1121 1117
         
1122 1118
         $table = $this->definition->getName();
@@ -1128,65 +1124,65 @@  discard block
 block discarded – undo
1128 1124
         $h = $this->having;
1129 1125
         $o = $this->order;
1130 1126
         $g = $this->group;
1131
-        $j = array_map(function ($v) {
1127
+        $j = array_map(function($v) {
1132 1128
             return clone $v;
1133 1129
         }, $this->joins);
1134 1130
         foreach ($this->definition->getRelations() as $k => $v) {
1135 1131
             foreach ($w as $kk => $vv) {
1136
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
1137
-                    $relations[$k] = [ $v, $table ];
1138
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
1132
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
1133
+                    $relations[$k] = [$v, $table];
1134
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
1139 1135
                 }
1140 1136
             }
1141
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
1142
-                $relations[$k] = [ $v, $table ];
1143
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
1144
-                $o[2] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[2]);
1137
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
1138
+                $relations[$k] = [$v, $table];
1139
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
1140
+                $o[2] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[2]);
1145 1141
             }
1146 1142
             foreach ($h as $kk => $vv) {
1147
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
1148
-                    $relations[$k] = [ $v, $table ];
1149
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
1143
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
1144
+                    $relations[$k] = [$v, $table];
1145
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
1150 1146
                 }
1151 1147
             }
1152
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
1153
-                $relations[$k] = [ $v, $table ];
1154
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
1148
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
1149
+                $relations[$k] = [$v, $table];
1150
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
1155 1151
             }
1156 1152
             foreach ($j as $kk => $vv) {
1157 1153
                 foreach ($vv->keymap as $kkk => $vvv) {
1158
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vvv)) {
1159
-                        $relations[$k] = [ $v, $table ];
1154
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vvv)) {
1155
+                        $relations[$k] = [$v, $table];
1160 1156
                         $j[$kk]->keymap[$kkk] =
1161
-                            preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vvv);
1157
+                            preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vvv);
1162 1158
                     }
1163 1159
                 }
1164 1160
             }
1165 1161
         }
1166 1162
 
1167
-        $key = array_map(function ($v) use ($table) {
1168
-            return $table . '.' . $v;
1163
+        $key = array_map(function($v) use ($table) {
1164
+            return $table.'.'.$v;
1169 1165
         }, $this->pkey);
1170 1166
         $own = false;
1171 1167
         $dir = 'ASC';
1172 1168
         if (count($o)) {
1173 1169
             $dir = strpos($o[0], ' DESC') ? 'DESC' : 'ASC';
1174
-            $own = strpos($o[2], $table . '.') === 0;
1170
+            $own = strpos($o[2], $table.'.') === 0;
1175 1171
         }
1176 1172
 
1177 1173
         $dst = $key;
1178 1174
         if (count($o)) {
1179 1175
             if ($own) {
1180 1176
                 // if using own table - do not use max/min in order - that will prevent index usage
1181
-                $dst[] = $o[2] . ' orderbyfix___';
1177
+                $dst[] = $o[2].' orderbyfix___';
1182 1178
             } else {
1183
-                $dst[] = 'MAX(' . $o[2] . ') orderbyfix___';
1179
+                $dst[] = 'MAX('.$o[2].') orderbyfix___';
1184 1180
             }
1185 1181
         }
1186 1182
         $dst = array_unique($dst);
1187 1183
 
1188 1184
         $par = [];
1189
-        $sql  = 'SELECT DISTINCT '.implode(', ', $dst).' FROM '.$table.' ';
1185
+        $sql = 'SELECT DISTINCT '.implode(', ', $dst).' FROM '.$table.' ';
1190 1186
         foreach ($relations as $k => $v) {
1191 1187
             $table = $v[1] !== $this->definition->getName() ? $getAlias($v[1]) : $v[1];
1192 1188
             $v = $v[0];
@@ -1197,13 +1193,13 @@  discard block
 block discarded – undo
1197 1193
                 foreach ($v->keymap as $kk => $vv) {
1198 1194
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1199 1195
                 }
1200
-                $sql .= implode(' AND ', $tmp) . ' ';
1196
+                $sql .= implode(' AND ', $tmp).' ';
1201 1197
                 $sql .= 'LEFT JOIN '.$v->table->getName().' '.$getAlias($k).' ON ';
1202 1198
                 $tmp = [];
1203 1199
                 foreach ($v->pivot_keymap as $kk => $vv) {
1204 1200
                     $tmp[] = $getAlias($k).'.'.$vv.' = '.$alias.'.'.$kk.' ';
1205 1201
                 }
1206
-                $sql .= implode(' AND ', $tmp) . ' ';
1202
+                $sql .= implode(' AND ', $tmp).' ';
1207 1203
             } else {
1208 1204
                 $alias = $getAlias($k);
1209 1205
                 $sql .= 'LEFT JOIN '.$v->table->getName().' '.$alias.' ON ';
@@ -1212,37 +1208,37 @@  discard block
 block discarded – undo
1212 1208
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1213 1209
                 }
1214 1210
                 if ($v->sql) {
1215
-                    $tmp[] = $v->sql . ' ';
1211
+                    $tmp[] = $v->sql.' ';
1216 1212
                     $par = array_merge($par, $v->par ?? []);
1217 1213
                 }
1218
-                $sql .= implode(' AND ', $tmp) . ' ';
1214
+                $sql .= implode(' AND ', $tmp).' ';
1219 1215
             }
1220 1216
         }
1221 1217
         foreach ($j as $k => $v) {
1222
-            $sql .= ($v->many ? 'LEFT ' : '' ) . 'JOIN '.$v->table->getName().' '.$k.' ON ';
1218
+            $sql .= ($v->many ? 'LEFT ' : '').'JOIN '.$v->table->getName().' '.$k.' ON ';
1223 1219
             $tmp = [];
1224 1220
             foreach ($v->keymap as $kk => $vv) {
1225 1221
                 $tmp[] = $kk.' = '.$vv;
1226 1222
             }
1227
-            $sql .= implode(' AND ', $tmp) . ' ';
1223
+            $sql .= implode(' AND ', $tmp).' ';
1228 1224
         }
1229 1225
         if (count($w)) {
1230 1226
             $sql .= 'WHERE ';
1231 1227
             $tmp = [];
1232 1228
             foreach ($w as $v) {
1233
-                $tmp[] = '(' . $v[0] . ')';
1229
+                $tmp[] = '('.$v[0].')';
1234 1230
                 $par = array_merge($par, $v[1]);
1235 1231
             }
1236 1232
             $sql .= implode(' AND ', $tmp).' ';
1237 1233
         }
1238 1234
         if (!$own) {
1239
-            $sql .= 'GROUP BY ' . implode(', ', $key) . ' ';
1235
+            $sql .= 'GROUP BY '.implode(', ', $key).' ';
1240 1236
         }
1241 1237
         if (count($h)) {
1242 1238
             $sql .= 'HAVING ';
1243 1239
             $tmp = [];
1244 1240
             foreach ($h as $v) {
1245
-                $tmp[] = '(' . $v[0] . ')';
1241
+                $tmp[] = '('.$v[0].')';
1246 1242
                 $par = array_merge($par, $v[1]);
1247 1243
             }
1248 1244
             $sql .= implode(' AND ', $tmp).' ';
@@ -1250,38 +1246,38 @@  discard block
 block discarded – undo
1250 1246
         if (count($o)) {
1251 1247
             $sql .= 'ORDER BY ';
1252 1248
             if ($own) {
1253
-                $sql .= $o[2] . ' ' . $dir;
1249
+                $sql .= $o[2].' '.$dir;
1254 1250
             } else {
1255
-                $sql .= 'MAX('.$o[2].') ' . $dir;
1251
+                $sql .= 'MAX('.$o[2].') '.$dir;
1256 1252
             }
1257 1253
         }
1258 1254
         $porder = [];
1259 1255
         $pdir = (count($o) && strpos($o[0], 'DESC') !== false) ? 'DESC' : 'ASC';
1260 1256
         foreach ($this->definition->getPrimaryKey() as $field) {
1261
-            $porder[] = $this->getColumn($field)['name'] . ' ' . $pdir;
1257
+            $porder[] = $this->getColumn($field)['name'].' '.$pdir;
1262 1258
         }
1263 1259
         if (count($porder)) {
1264
-            $sql .= (count($o) ? ', ' : 'ORDER BY ') . implode(', ', $porder) . ' ';
1260
+            $sql .= (count($o) ? ', ' : 'ORDER BY ').implode(', ', $porder).' ';
1265 1261
         }
1266 1262
 
1267 1263
         if ($this->li_of[0]) {
1268 1264
             if ($this->db->driverName() === 'oracle') {
1269
-                if ((int)$this->db->driverOption('version', 0) >= 12) {
1270
-                    $sql .= 'OFFSET ' . $this->li_of[1] . ' ROWS FETCH NEXT ' . $this->li_of[0] . ' ROWS ONLY';
1265
+                if ((int) $this->db->driverOption('version', 0) >= 12) {
1266
+                    $sql .= 'OFFSET '.$this->li_of[1].' ROWS FETCH NEXT '.$this->li_of[0].' ROWS ONLY';
1271 1267
                 } else {
1272
-                    $sql = "SELECT " . implode(', ', $dst) . " 
1268
+                    $sql = "SELECT ".implode(', ', $dst)." 
1273 1269
                             FROM (
1274 1270
                                 SELECT tbl__.*, rownum rnum__ FROM (
1275
-                                    " . $sql . "
1271
+                                    " . $sql."
1276 1272
                                 ) tbl__ 
1277
-                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1]) . "
1273
+                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1])."
1278 1274
                             ) WHERE rnum__ > " . $this->li_of[1];
1279 1275
                 }
1280 1276
             } else {
1281
-                $sql .= 'LIMIT ' . $this->li_of[0] . ' OFFSET ' . $this->li_of[1];
1277
+                $sql .= 'LIMIT '.$this->li_of[0].' OFFSET '.$this->li_of[1];
1282 1278
             }
1283 1279
         }
1284
-        return array_map(function ($v) {
1280
+        return array_map(function($v) {
1285 1281
             if (array_key_exists('orderbyfix___', $v)) {
1286 1282
                 unset($v['orderbyfix___']);
1287 1283
             }
Please login to merge, or discard this patch.