Completed
Push — master ( 793829...85d2a2 )
by Ivan
03:56
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
         }
@@ -721,9 +717,9 @@  discard block
 block discarded – undo
721 717
             return $this->qiterator;
722 718
         }
723 719
         $aliases = [];
724
-        $getAlias = function ($name) use (&$aliases) {
720
+        $getAlias = function($name) use (&$aliases) {
725 721
             // to bypass use: return $name;
726
-            return $aliases[$name] = $aliases[$name] ?? 'alias' . static::SEP . count($aliases);
722
+            return $aliases[$name] = $aliases[$name] ?? 'alias'.static::SEP.count($aliases);
727 723
         };
728 724
         $table = $this->definition->getName();
729 725
         if ($fields !== null) {
@@ -739,7 +735,7 @@  discard block
 block discarded – undo
739 735
         $h = $this->having;
740 736
         $o = $this->order;
741 737
         $g = $this->group;
742
-        $j = array_map(function ($v) {
738
+        $j = array_map(function($v) {
743 739
             return clone $v;
744 740
         }, $this->joins);
745 741
 
@@ -750,38 +746,38 @@  discard block
 block discarded – undo
750 746
 
751 747
         foreach ($this->definition->getRelations() as $k => $relation) {
752 748
             foreach ($f as $kk => $field) {
753
-                if (strpos($field, $k . '.') === 0) {
754
-                    $relations[$k] = [ $relation, $table ];
755
-                    $f[$kk] = str_replace($k . '.', $getAlias($k) . '.', $field);
749
+                if (strpos($field, $k.'.') === 0) {
750
+                    $relations[$k] = [$relation, $table];
751
+                    $f[$kk] = str_replace($k.'.', $getAlias($k).'.', $field);
756 752
                 }
757 753
             }
758 754
             foreach ($w as $kk => $v) {
759
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
760
-                    $relations[$k] = [ $relation, $table ];
761
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
755
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
756
+                    $relations[$k] = [$relation, $table];
757
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
762 758
                 }
763 759
             }
764 760
             foreach ($h as $kk => $v) {
765
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $v[0])) {
766
-                    $relations[$k] = [ $relation, $table ];
767
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $v[0]);
761
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $v[0])) {
762
+                    $relations[$k] = [$relation, $table];
763
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $v[0]);
768 764
                 }
769 765
             }
770
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
771
-                $relations[$k] = [ $relation, $table ];
772
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
766
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
767
+                $relations[$k] = [$relation, $table];
768
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
773 769
             }
774
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
775
-                $relations[$k] = [ $relation, $table ];
776
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
770
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
771
+                $relations[$k] = [$relation, $table];
772
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
777 773
             }
778 774
             foreach ($j as $kk => $v) {
779 775
                 foreach ($v->keymap as $kkk => $vv) {
780
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv)) {
781
-                        $relations[$k] = [ $relation, $table ];
776
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vv)) {
777
+                        $relations[$k] = [$relation, $table];
782 778
                         $j[$kk]->keymap[$kkk] = preg_replace(
783
-                            '(\b'.preg_quote($k . '.'). ')i',
784
-                            $getAlias($k) . '.',
779
+                            '(\b'.preg_quote($k.'.').')i',
780
+                            $getAlias($k).'.',
785 781
                             $vv
786 782
                         );
787 783
                     }
@@ -790,11 +786,11 @@  discard block
 block discarded – undo
790 786
         }
791 787
         $select = [];
792 788
         foreach ($f as $k => $field) {
793
-            $select[] = $field . (!is_numeric($k) ? ' ' . $k : '');
789
+            $select[] = $field.(!is_numeric($k) ? ' '.$k : '');
794 790
         }
795 791
         foreach ($this->withr as $name => $relation) {
796 792
             foreach ($relation[0]->table->getColumns() as $column) {
797
-                $select[] = $getAlias($name) . '.' . $column . ' ' . $getAlias($name . static::SEP . $column);
793
+                $select[] = $getAlias($name).'.'.$column.' '.$getAlias($name.static::SEP.$column);
798 794
             }
799 795
         }
800 796
         $sql = 'SELECT '.implode(', ', $select).' FROM '.$table.' ';
@@ -813,13 +809,13 @@  discard block
 block discarded – undo
813 809
                 foreach ($v->keymap as $kk => $vv) {
814 810
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
815 811
                 }
816
-                $sql .= implode(' AND ', $tmp) . ' ';
812
+                $sql .= implode(' AND ', $tmp).' ';
817 813
                 $sql .= 'LEFT JOIN '.$v->table->getName().' '.$getAlias($relation).' ON ';
818 814
                 $tmp = [];
819 815
                 foreach ($v->pivot_keymap as $kk => $vv) {
820 816
                     $tmp[] = $getAlias($relation).'.'.$vv.' = '.$alias.'.'.$kk.' ';
821 817
                 }
822
-                $sql .= implode(' AND ', $tmp) . ' ';
818
+                $sql .= implode(' AND ', $tmp).' ';
823 819
             } else {
824 820
                 $alias = $getAlias($relation);
825 821
 
@@ -829,22 +825,22 @@  discard block
 block discarded – undo
829 825
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
830 826
                 }
831 827
                 if ($v->sql) {
832
-                    $tmp[] = $v->sql . ' ';
828
+                    $tmp[] = $v->sql.' ';
833 829
                     $par = array_merge($par, $v->par ?? []);
834 830
                 }
835
-                $sql .= implode(' AND ', $tmp) . ' ';
831
+                $sql .= implode(' AND ', $tmp).' ';
836 832
             }
837 833
         }
838 834
         foreach ($j as $k => $v) {
839 835
             if ($v->many) {
840 836
                 $many = true;
841 837
             }
842
-            $sql .= ($v->many ? 'LEFT ' : '' ) . 'JOIN '.$v->table->getName().' '.$k.' ON ';
838
+            $sql .= ($v->many ? 'LEFT ' : '').'JOIN '.$v->table->getName().' '.$k.' ON ';
843 839
             $tmp = [];
844 840
             foreach ($v->keymap as $kk => $vv) {
845 841
                 $tmp[] = $kk.' = '.$vv;
846 842
             }
847
-            $sql .= implode(' AND ', $tmp) . ' ';
843
+            $sql .= implode(' AND ', $tmp).' ';
848 844
         }
849 845
         if ($many && count($porder) && $this->li_of[2] === 1) {
850 846
             $ids = $this->ids();
@@ -852,9 +848,9 @@  discard block
 block discarded – undo
852 848
                 if (count($porder) > 1) {
853 849
                     $pkw = [];
854 850
                     foreach ($porder as $name) {
855
-                        $pkw[] = $name . ' = ?';
851
+                        $pkw[] = $name.' = ?';
856 852
                     }
857
-                    $pkw = '(' . implode(' AND ', $pkw) . ')';
853
+                    $pkw = '('.implode(' AND ', $pkw).')';
858 854
                     $pkp = [];
859 855
                     foreach ($ids as $id) {
860 856
                         foreach ($id as $p) {
@@ -866,51 +862,51 @@  discard block
 block discarded – undo
866 862
                         $pkp
867 863
                     ];
868 864
                 } else {
869
-                    $w[] = [ $porder[0] . ' IN ('.implode(',', array_fill(0, count($ids), '?')).')', $ids ];
865
+                    $w[] = [$porder[0].' IN ('.implode(',', array_fill(0, count($ids), '?')).')', $ids];
870 866
                 }
871 867
             } else {
872
-                $w[] = [ '1=0', [] ];
868
+                $w[] = ['1=0', []];
873 869
             }
874 870
         }
875 871
         if (count($w)) {
876 872
             $sql .= 'WHERE ';
877 873
             $tmp = [];
878 874
             foreach ($w as $v) {
879
-                $tmp[] = '(' . $v[0] . ')';
875
+                $tmp[] = '('.$v[0].')';
880 876
                 $par = array_merge($par, $v[1]);
881 877
             }
882 878
             $sql .= implode(' AND ', $tmp).' ';
883 879
         }
884 880
         if (count($g)) {
885
-            $sql .= 'GROUP BY ' . $g[0] . ' ';
881
+            $sql .= 'GROUP BY '.$g[0].' ';
886 882
             $par = array_merge($par, $g[1]);
887 883
         }
888 884
         if (count($h)) {
889 885
             $sql .= 'HAVING ';
890 886
             $tmp = [];
891 887
             foreach ($h as $v) {
892
-                $tmp[] = '(' . $v[0] . ')';
888
+                $tmp[] = '('.$v[0].')';
893 889
                 $par = array_merge($par, $v[1]);
894 890
             }
895 891
             $sql .= implode(' AND ', $tmp).' ';
896 892
         }
897 893
         if (count($o)) {
898
-            $sql .= 'ORDER BY ' . $o[0] . ' ';
894
+            $sql .= 'ORDER BY '.$o[0].' ';
899 895
             $par = array_merge($par, $o[1]);
900 896
         }
901 897
         if (!count($g) && count($porder)) {
902 898
             $pdir = (count($o) && strpos($o[0], 'DESC') !== false) ? 'DESC' : 'ASC';
903
-            $porder = array_map(function ($v) use ($pdir) {
904
-                return $v . ' ' . $pdir;
899
+            $porder = array_map(function($v) use ($pdir) {
900
+                return $v.' '.$pdir;
905 901
             }, $porder);
906
-            $sql .= (count($o) ? ', ' : 'ORDER BY ') . implode(', ', $porder) . ' ';
902
+            $sql .= (count($o) ? ', ' : 'ORDER BY ').implode(', ', $porder).' ';
907 903
         }
908 904
         if ((!$many || $this->li_of[2] === 0 || !count($porder)) && $this->li_of[0]) {
909 905
             if ($this->db->driverName() === 'oracle') {
910
-                if ((int)$this->db->driverOption('version', 0) >= 12) {
911
-                    $sql .= 'OFFSET ' . $this->li_of[1] . ' ROWS FETCH NEXT ' . $this->li_of[0] . ' ROWS ONLY';
906
+                if ((int) $this->db->driverOption('version', 0) >= 12) {
907
+                    $sql .= 'OFFSET '.$this->li_of[1].' ROWS FETCH NEXT '.$this->li_of[0].' ROWS ONLY';
912 908
                 } else {
913
-                    $f = array_map(function ($v) {
909
+                    $f = array_map(function($v) {
914 910
                         $v = explode(' ', trim($v), 2);
915 911
                         if (count($v) === 2) {
916 912
                             return $v[1];
@@ -918,16 +914,16 @@  discard block
 block discarded – undo
918 914
                         $v = explode('.', $v[0], 2);
919 915
                         return count($v) === 2 ? $v[1] : $v[0];
920 916
                     }, $select);
921
-                    $sql = "SELECT " . implode(', ', $f) . " 
917
+                    $sql = "SELECT ".implode(', ', $f)." 
922 918
                             FROM (
923 919
                                 SELECT tbl__.*, rownum rnum__ FROM (
924
-                                    " . $sql . "
920
+                                    " . $sql."
925 921
                                 ) tbl__ 
926
-                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1]) . "
922
+                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1])."
927 923
                             ) WHERE rnum__ > " . $this->li_of[1];
928 924
                 }
929 925
             } else {
930
-                $sql .= 'LIMIT ' . $this->li_of[0] . ' OFFSET ' . $this->li_of[1];
926
+                $sql .= 'LIMIT '.$this->li_of[0].' OFFSET '.$this->li_of[1];
931 927
             }
932 928
         }
933 929
         return $this->qiterator = new TableQueryIterator(
@@ -977,8 +973,8 @@  discard block
 block discarded – undo
977 973
                 $ret[$k] = str_repeat(' ', 255);
978 974
                 $par[] = &$ret[$k];
979 975
             }
980
-            $sql .= ' RETURNING ' . implode(',', $primary) .
981
-                ' INTO ' . implode(',', array_fill(0, count($primary), '?'));
976
+            $sql .= ' RETURNING '.implode(',', $primary).
977
+                ' INTO '.implode(',', array_fill(0, count($primary), '?'));
982 978
             $this->db->query($sql, $par);
983 979
             return $ret;
984 980
         } else {
@@ -1010,9 +1006,9 @@  discard block
 block discarded – undo
1010 1006
         }
1011 1007
         $sql = 'UPDATE '.$table.' SET ';
1012 1008
         $par = [];
1013
-        $sql .= implode(', ', array_map(function ($v) {
1014
-            return $v . ' = ?';
1015
-        }, array_keys($update))) . ' ';
1009
+        $sql .= implode(', ', array_map(function($v) {
1010
+            return $v.' = ?';
1011
+        }, array_keys($update))).' ';
1016 1012
         $par = array_merge($par, array_values($update));
1017 1013
         if (count($this->where)) {
1018 1014
             $sql .= 'WHERE ';
@@ -1021,7 +1017,7 @@  discard block
 block discarded – undo
1021 1017
                 $tmp[] = $v[0];
1022 1018
                 $par = array_merge($par, $v[1]);
1023 1019
             }
1024
-            $sql .= implode(' AND ', $tmp) . ' ';
1020
+            $sql .= implode(' AND ', $tmp).' ';
1025 1021
         }
1026 1022
         if (count($this->order)) {
1027 1023
             $sql .= $this->order[0];
@@ -1045,7 +1041,7 @@  discard block
 block discarded – undo
1045 1041
                 $tmp[] = $v[0];
1046 1042
                 $par = array_merge($par, $v[1]);
1047 1043
             }
1048
-            $sql .= implode(' AND ', $tmp) . ' ';
1044
+            $sql .= implode(' AND ', $tmp).' ';
1049 1045
         }
1050 1046
         if (count($this->order)) {
1051 1047
             $sql .= $this->order[0];
@@ -1065,13 +1061,13 @@  discard block
 block discarded – undo
1065 1061
         $table = $this->definition;
1066 1062
         array_reduce(
1067 1063
             $parts,
1068
-            function ($carry, $item) use (&$table) {
1064
+            function($carry, $item) use (&$table) {
1069 1065
                 if (!$table->hasRelation($item)) {
1070 1066
                     throw new DBException('Invalid relation name');
1071 1067
                 }
1072 1068
                 $relation = $table->getRelation($item);
1073
-                $name = $carry ? $carry . static::SEP . $item : $item;
1074
-                $this->withr[$name] = [ $relation, $carry ?? $table->getName() ];
1069
+                $name = $carry ? $carry.static::SEP.$item : $item;
1070
+                $this->withr[$name] = [$relation, $carry ?? $table->getName()];
1075 1071
                 $table = $relation->table;
1076 1072
                 return $name;
1077 1073
             }
@@ -1116,9 +1112,9 @@  discard block
 block discarded – undo
1116 1112
         }
1117 1113
 
1118 1114
         $aliases = [];
1119
-        $getAlias = function ($name) use (&$aliases) {
1115
+        $getAlias = function($name) use (&$aliases) {
1120 1116
             // to bypass use: return $name;
1121
-            return $aliases[$name] = $aliases[$name] ?? 'alias' . static::SEP . count($aliases);
1117
+            return $aliases[$name] = $aliases[$name] ?? 'alias'.static::SEP.count($aliases);
1122 1118
         };
1123 1119
         
1124 1120
         $table = $this->definition->getName();
@@ -1130,65 +1126,65 @@  discard block
 block discarded – undo
1130 1126
         $h = $this->having;
1131 1127
         $o = $this->order;
1132 1128
         $g = $this->group;
1133
-        $j = array_map(function ($v) {
1129
+        $j = array_map(function($v) {
1134 1130
             return clone $v;
1135 1131
         }, $this->joins);
1136 1132
         foreach ($this->definition->getRelations() as $k => $v) {
1137 1133
             foreach ($w as $kk => $vv) {
1138
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
1139
-                    $relations[$k] = [ $v, $table ];
1140
-                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
1134
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
1135
+                    $relations[$k] = [$v, $table];
1136
+                    $w[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
1141 1137
                 }
1142 1138
             }
1143
-            if (isset($o[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $o[0])) {
1144
-                $relations[$k] = [ $v, $table ];
1145
-                $o[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[0]);
1146
-                $o[2] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $o[2]);
1139
+            if (isset($o[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $o[0])) {
1140
+                $relations[$k] = [$v, $table];
1141
+                $o[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[0]);
1142
+                $o[2] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $o[2]);
1147 1143
             }
1148 1144
             foreach ($h as $kk => $vv) {
1149
-                if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vv[0])) {
1150
-                    $relations[$k] = [ $v, $table ];
1151
-                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vv[0]);
1145
+                if (preg_match('(\b'.preg_quote($k.'.').')i', $vv[0])) {
1146
+                    $relations[$k] = [$v, $table];
1147
+                    $h[$kk][0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vv[0]);
1152 1148
                 }
1153 1149
             }
1154
-            if (isset($g[0]) && preg_match('(\b'.preg_quote($k . '.'). ')i', $g[0])) {
1155
-                $relations[$k] = [ $v, $table ];
1156
-                $g[0] = preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $g[0]);
1150
+            if (isset($g[0]) && preg_match('(\b'.preg_quote($k.'.').')i', $g[0])) {
1151
+                $relations[$k] = [$v, $table];
1152
+                $g[0] = preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $g[0]);
1157 1153
             }
1158 1154
             foreach ($j as $kk => $vv) {
1159 1155
                 foreach ($vv->keymap as $kkk => $vvv) {
1160
-                    if (preg_match('(\b'.preg_quote($k . '.'). ')i', $vvv)) {
1161
-                        $relations[$k] = [ $v, $table ];
1156
+                    if (preg_match('(\b'.preg_quote($k.'.').')i', $vvv)) {
1157
+                        $relations[$k] = [$v, $table];
1162 1158
                         $j[$kk]->keymap[$kkk] =
1163
-                            preg_replace('(\b'.preg_quote($k . '.'). ')i', $getAlias($k) . '.', $vvv);
1159
+                            preg_replace('(\b'.preg_quote($k.'.').')i', $getAlias($k).'.', $vvv);
1164 1160
                     }
1165 1161
                 }
1166 1162
             }
1167 1163
         }
1168 1164
 
1169
-        $key = array_map(function ($v) use ($table) {
1170
-            return $table . '.' . $v;
1165
+        $key = array_map(function($v) use ($table) {
1166
+            return $table.'.'.$v;
1171 1167
         }, $this->pkey);
1172 1168
         $own = false;
1173 1169
         $dir = 'ASC';
1174 1170
         if (count($o)) {
1175 1171
             $dir = strpos($o[0], ' DESC') ? 'DESC' : 'ASC';
1176
-            $own = strpos($o[2], $table . '.') === 0;
1172
+            $own = strpos($o[2], $table.'.') === 0;
1177 1173
         }
1178 1174
 
1179 1175
         $dst = $key;
1180 1176
         if (count($o)) {
1181 1177
             if ($own) {
1182 1178
                 // if using own table - do not use max/min in order - that will prevent index usage
1183
-                $dst[] = $o[2] . ' orderbyfix___';
1179
+                $dst[] = $o[2].' orderbyfix___';
1184 1180
             } else {
1185
-                $dst[] = 'MAX(' . $o[2] . ') orderbyfix___';
1181
+                $dst[] = 'MAX('.$o[2].') orderbyfix___';
1186 1182
             }
1187 1183
         }
1188 1184
         $dst = array_unique($dst);
1189 1185
 
1190 1186
         $par = [];
1191
-        $sql  = 'SELECT DISTINCT '.implode(', ', $dst).' FROM '.$table.' ';
1187
+        $sql = 'SELECT DISTINCT '.implode(', ', $dst).' FROM '.$table.' ';
1192 1188
         foreach ($relations as $k => $v) {
1193 1189
             $table = $v[1] !== $this->definition->getName() ? $getAlias($v[1]) : $v[1];
1194 1190
             $v = $v[0];
@@ -1199,13 +1195,13 @@  discard block
 block discarded – undo
1199 1195
                 foreach ($v->keymap as $kk => $vv) {
1200 1196
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1201 1197
                 }
1202
-                $sql .= implode(' AND ', $tmp) . ' ';
1198
+                $sql .= implode(' AND ', $tmp).' ';
1203 1199
                 $sql .= 'LEFT JOIN '.$v->table->getName().' '.$getAlias($k).' ON ';
1204 1200
                 $tmp = [];
1205 1201
                 foreach ($v->pivot_keymap as $kk => $vv) {
1206 1202
                     $tmp[] = $getAlias($k).'.'.$vv.' = '.$alias.'.'.$kk.' ';
1207 1203
                 }
1208
-                $sql .= implode(' AND ', $tmp) . ' ';
1204
+                $sql .= implode(' AND ', $tmp).' ';
1209 1205
             } else {
1210 1206
                 $alias = $getAlias($k);
1211 1207
                 $sql .= 'LEFT JOIN '.$v->table->getName().' '.$alias.' ON ';
@@ -1214,37 +1210,37 @@  discard block
 block discarded – undo
1214 1210
                     $tmp[] = $table.'.'.$kk.' = '.$alias.'.'.$vv.' ';
1215 1211
                 }
1216 1212
                 if ($v->sql) {
1217
-                    $tmp[] = $v->sql . ' ';
1213
+                    $tmp[] = $v->sql.' ';
1218 1214
                     $par = array_merge($par, $v->par ?? []);
1219 1215
                 }
1220
-                $sql .= implode(' AND ', $tmp) . ' ';
1216
+                $sql .= implode(' AND ', $tmp).' ';
1221 1217
             }
1222 1218
         }
1223 1219
         foreach ($j as $k => $v) {
1224
-            $sql .= ($v->many ? 'LEFT ' : '' ) . 'JOIN '.$v->table->getName().' '.$k.' ON ';
1220
+            $sql .= ($v->many ? 'LEFT ' : '').'JOIN '.$v->table->getName().' '.$k.' ON ';
1225 1221
             $tmp = [];
1226 1222
             foreach ($v->keymap as $kk => $vv) {
1227 1223
                 $tmp[] = $kk.' = '.$vv;
1228 1224
             }
1229
-            $sql .= implode(' AND ', $tmp) . ' ';
1225
+            $sql .= implode(' AND ', $tmp).' ';
1230 1226
         }
1231 1227
         if (count($w)) {
1232 1228
             $sql .= 'WHERE ';
1233 1229
             $tmp = [];
1234 1230
             foreach ($w as $v) {
1235
-                $tmp[] = '(' . $v[0] . ')';
1231
+                $tmp[] = '('.$v[0].')';
1236 1232
                 $par = array_merge($par, $v[1]);
1237 1233
             }
1238 1234
             $sql .= implode(' AND ', $tmp).' ';
1239 1235
         }
1240 1236
         if (!$own) {
1241
-            $sql .= 'GROUP BY ' . implode(', ', $key) . ' ';
1237
+            $sql .= 'GROUP BY '.implode(', ', $key).' ';
1242 1238
         }
1243 1239
         if (count($h)) {
1244 1240
             $sql .= 'HAVING ';
1245 1241
             $tmp = [];
1246 1242
             foreach ($h as $v) {
1247
-                $tmp[] = '(' . $v[0] . ')';
1243
+                $tmp[] = '('.$v[0].')';
1248 1244
                 $par = array_merge($par, $v[1]);
1249 1245
             }
1250 1246
             $sql .= implode(' AND ', $tmp).' ';
@@ -1252,38 +1248,38 @@  discard block
 block discarded – undo
1252 1248
         if (count($o)) {
1253 1249
             $sql .= 'ORDER BY ';
1254 1250
             if ($own) {
1255
-                $sql .= $o[2] . ' ' . $dir;
1251
+                $sql .= $o[2].' '.$dir;
1256 1252
             } else {
1257
-                $sql .= 'MAX('.$o[2].') ' . $dir;
1253
+                $sql .= 'MAX('.$o[2].') '.$dir;
1258 1254
             }
1259 1255
         }
1260 1256
         $porder = [];
1261 1257
         $pdir = (count($o) && strpos($o[0], 'DESC') !== false) ? 'DESC' : 'ASC';
1262 1258
         foreach ($this->definition->getPrimaryKey() as $field) {
1263
-            $porder[] = $this->getColumn($field)['name'] . ' ' . $pdir;
1259
+            $porder[] = $this->getColumn($field)['name'].' '.$pdir;
1264 1260
         }
1265 1261
         if (count($porder)) {
1266
-            $sql .= (count($o) ? ', ' : 'ORDER BY ') . implode(', ', $porder) . ' ';
1262
+            $sql .= (count($o) ? ', ' : 'ORDER BY ').implode(', ', $porder).' ';
1267 1263
         }
1268 1264
 
1269 1265
         if ($this->li_of[0]) {
1270 1266
             if ($this->db->driverName() === 'oracle') {
1271
-                if ((int)$this->db->driverOption('version', 0) >= 12) {
1272
-                    $sql .= 'OFFSET ' . $this->li_of[1] . ' ROWS FETCH NEXT ' . $this->li_of[0] . ' ROWS ONLY';
1267
+                if ((int) $this->db->driverOption('version', 0) >= 12) {
1268
+                    $sql .= 'OFFSET '.$this->li_of[1].' ROWS FETCH NEXT '.$this->li_of[0].' ROWS ONLY';
1273 1269
                 } else {
1274
-                    $sql = "SELECT " . implode(', ', $dst) . " 
1270
+                    $sql = "SELECT ".implode(', ', $dst)." 
1275 1271
                             FROM (
1276 1272
                                 SELECT tbl__.*, rownum rnum__ FROM (
1277
-                                    " . $sql . "
1273
+                                    " . $sql."
1278 1274
                                 ) tbl__ 
1279
-                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1]) . "
1275
+                                WHERE rownum <= " . ($this->li_of[0] + $this->li_of[1])."
1280 1276
                             ) WHERE rnum__ > " . $this->li_of[1];
1281 1277
                 }
1282 1278
             } else {
1283
-                $sql .= 'LIMIT ' . $this->li_of[0] . ' OFFSET ' . $this->li_of[1];
1279
+                $sql .= 'LIMIT '.$this->li_of[0].' OFFSET '.$this->li_of[1];
1284 1280
             }
1285 1281
         }
1286
-        return array_map(function ($v) {
1282
+        return array_map(function($v) {
1287 1283
             if (array_key_exists('orderbyfix___', $v)) {
1288 1284
                 unset($v['orderbyfix___']);
1289 1285
             }
Please login to merge, or discard this patch.