Skip to content

Commit 928d562

Browse files
committed
Remove $lateral from JoinClause and use JoinLateralClause instead
1 parent 8ba8978 commit 928d562

File tree

7 files changed

+37
-26
lines changed

7 files changed

+37
-26
lines changed

src/Illuminate/Database/Query/Builder.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ public function joinLateral($query, string $as, string $type = 'inner'): static
602602

603603
$this->addBinding($bindings, 'join');
604604

605-
$this->joins[] = $this->newJoinClause($this, $type, new Expression($expression), true);
605+
$this->joins[] = $this->newJoinLateralClause($this, $type, new Expression($expression));
606606

607607
return $this;
608608
}
@@ -751,12 +751,24 @@ public function crossJoinSub($query, $as)
751751
* @param \Illuminate\Database\Query\Builder $parentQuery
752752
* @param string $type
753753
* @param string $table
754-
* @param bool $lateral
755754
* @return \Illuminate\Database\Query\JoinClause
756755
*/
757-
protected function newJoinClause(self $parentQuery, $type, $table, $lateral = false)
756+
protected function newJoinClause(self $parentQuery, $type, $table)
758757
{
759-
return new JoinClause($parentQuery, $type, $table, $lateral);
758+
return new JoinClause($parentQuery, $type, $table);
759+
}
760+
761+
/**
762+
* Get a new join lateral clause.
763+
*
764+
* @param \Illuminate\Database\Query\Builder $parentQuery
765+
* @param string $type
766+
* @param string $table
767+
* @return \Illuminate\Database\Query\JoinLateralClause
768+
*/
769+
protected function newJoinLateralClause(self $parentQuery, $type, $table)
770+
{
771+
return new JoinLateralClause($parentQuery, $type, $table);
760772
}
761773

762774
/**

src/Illuminate/Database/Query/Grammars/Grammar.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Database\Grammar as BaseGrammar;
88
use Illuminate\Database\Query\Builder;
99
use Illuminate\Database\Query\JoinClause;
10+
use Illuminate\Database\Query\JoinLateralClause;
1011
use Illuminate\Support\Arr;
1112
use RuntimeException;
1213

@@ -182,7 +183,7 @@ protected function compileJoins(Builder $query, $joins)
182183

183184
$tableAndNestedJoins = is_null($join->joins) ? $table : '('.$table.$nestedJoins.')';
184185

185-
if ($join->lateral) {
186+
if ($join instanceof JoinLateralClause) {
186187
return $this->joinLateral($join, $tableAndNestedJoins);
187188
}
188189

@@ -193,13 +194,13 @@ protected function compileJoins(Builder $query, $joins)
193194
/**
194195
* Compile a "lateral join" clause.
195196
*
196-
* @param \Illuminate\Database\Query\JoinClause $join
197+
* @param \Illuminate\Database\Query\JoinLateralClause $join
197198
* @param string $expression
198199
* @return string
199200
*
200201
* @throws \RuntimeException
201202
*/
202-
public function joinLateral(JoinClause $join, string $expression): string
203+
public function joinLateral(JoinLateralClause $join, string $expression): string
203204
{
204205
throw new RuntimeException('This database engine does not support lateral joins.');
205206
}

src/Illuminate/Database/Query/Grammars/MySqlGrammar.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace Illuminate\Database\Query\Grammars;
44

55
use Illuminate\Database\Query\Builder;
6-
use Illuminate\Database\Query\JoinClause;
6+
use Illuminate\Database\Query\JoinLateralClause;
77
use Illuminate\Support\Str;
88

99
class MySqlGrammar extends Grammar
@@ -237,11 +237,11 @@ protected function compileUpdateColumns(Builder $query, array $values)
237237
/**
238238
* Compile a "lateral join" clause.
239239
*
240-
* @param \Illuminate\Database\Query\JoinClause $join
240+
* @param \Illuminate\Database\Query\JoinLateralClause $join
241241
* @param string $expression
242242
* @return string
243243
*/
244-
public function joinLateral(JoinClause $join, string $expression): string
244+
public function joinLateral(JoinLateralClause $join, string $expression): string
245245
{
246246
return trim("{$join->type} join lateral {$expression} on true");
247247
}

src/Illuminate/Database/Query/Grammars/PostgresGrammar.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace Illuminate\Database\Query\Grammars;
44

55
use Illuminate\Database\Query\Builder;
6-
use Illuminate\Database\Query\JoinClause;
6+
use Illuminate\Database\Query\JoinLateralClause;
77
use Illuminate\Support\Arr;
88
use Illuminate\Support\Str;
99

@@ -389,11 +389,11 @@ protected function compileUpdateColumns(Builder $query, array $values)
389389
/**
390390
* Compile a "lateral join" clause.
391391
*
392-
* @param \Illuminate\Database\Query\JoinClause $join
392+
* @param \Illuminate\Database\Query\JoinLateralClause $join
393393
* @param string $expression
394394
* @return string
395395
*/
396-
public function joinLateral(JoinClause $join, string $expression): string
396+
public function joinLateral(JoinLateralClause $join, string $expression): string
397397
{
398398
return trim("{$join->type} join lateral {$expression} on true");
399399
}

src/Illuminate/Database/Query/Grammars/SqlServerGrammar.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace Illuminate\Database\Query\Grammars;
44

55
use Illuminate\Database\Query\Builder;
6-
use Illuminate\Database\Query\JoinClause;
6+
use Illuminate\Database\Query\JoinLateralClause;
77
use Illuminate\Support\Arr;
88
use Illuminate\Support\Str;
99

@@ -390,11 +390,11 @@ protected function compileUpdateWithJoins(Builder $query, $table, $columns, $whe
390390
/**
391391
* Compile a "lateral join" clause.
392392
*
393-
* @param \Illuminate\Database\Query\JoinClause $join
393+
* @param \Illuminate\Database\Query\JoinLateralClause $join
394394
* @param string $expression
395395
* @return string
396396
*/
397-
public function joinLateral(JoinClause $join, string $expression): string
397+
public function joinLateral(JoinLateralClause $join, string $expression): string
398398
{
399399
$type = $join->type == 'left' ? 'outer' : 'cross';
400400

src/Illuminate/Database/Query/JoinClause.php

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,6 @@ class JoinClause extends Builder
2020
*/
2121
public $table;
2222

23-
/**
24-
* Indicates if the join is a "lateral" join.
25-
*
26-
* @var bool
27-
*/
28-
public $lateral;
29-
3023
/**
3124
* The connection of the parent query builder.
3225
*
@@ -61,14 +54,12 @@ class JoinClause extends Builder
6154
* @param \Illuminate\Database\Query\Builder $parentQuery
6255
* @param string $type
6356
* @param string $table
64-
* @param bool $lateral
6557
* @return void
6658
*/
67-
public function __construct(Builder $parentQuery, $type, $table, $lateral = false)
59+
public function __construct(Builder $parentQuery, $type, $table)
6860
{
6961
$this->type = $type;
7062
$this->table = $table;
71-
$this->lateral = $lateral;
7263
$this->parentClass = get_class($parentQuery);
7364
$this->parentGrammar = $parentQuery->getGrammar();
7465
$this->parentProcessor = $parentQuery->getProcessor();
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace Illuminate\Database\Query;
4+
5+
class JoinLateralClause extends JoinClause
6+
{
7+
}

0 commit comments

Comments
 (0)