Skip to content

Commit 626f7f9

Browse files
committed
Lateral Join: Change method names to include "sub"
1 parent 021acc9 commit 626f7f9

File tree

6 files changed

+33
-33
lines changed

6 files changed

+33
-33
lines changed

src/Illuminate/Database/Query/Builder.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -587,14 +587,14 @@ public function joinSub($query, $as, $first, $operator = null, $second = null, $
587587
}
588588

589589
/**
590-
* Add a lateral join clause to the query.
590+
* Add a lateral subquery join clause to the query.
591591
*
592592
* @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query
593593
* @param string $as
594594
* @param string $type
595595
* @return $this
596596
*/
597-
public function joinLateral($query, $as, $type = 'inner')
597+
public function joinSubLateral($query, $as, $type = 'inner')
598598
{
599599
[$query, $bindings] = $this->createSub($query);
600600

@@ -608,15 +608,15 @@ public function joinLateral($query, $as, $type = 'inner')
608608
}
609609

610610
/**
611-
* Add a lateral left join to the query.
611+
* Add a lateral subquery left join to the query.
612612
*
613613
* @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query
614614
* @param string $as
615615
* @return $this
616616
*/
617-
public function leftJoinLateral($query, $as)
617+
public function leftJoinSubLateral($query, $as)
618618
{
619-
return $this->joinLateral($query, $as, 'left');
619+
return $this->joinSubLateral($query, $as, 'left');
620620
}
621621

622622
/**

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,23 +183,23 @@ protected function compileJoins(Builder $query, $joins)
183183
$tableAndNestedJoins = is_null($join->joins) ? $table : '('.$table.$nestedJoins.')';
184184

185185
if ($join->lateral) {
186-
return $this->joinLateral($join, $tableAndNestedJoins);
186+
return $this->joinSubLateral($join, $tableAndNestedJoins);
187187
}
188188

189189
return trim("{$join->type} join {$tableAndNestedJoins} {$this->compileWheres($join)}");
190190
})->implode(' ');
191191
}
192192

193193
/**
194-
* Compile a "lateral join" clause.
194+
* Compile a lateral subquery join clause.
195195
*
196196
* @param \Illuminate\Database\Query\JoinClause $join
197197
* @param string $expression
198198
* @return string
199199
*
200200
* @throws \RuntimeException
201201
*/
202-
public function joinLateral(JoinClause $join, string $expression)
202+
public function joinSubLateral(JoinClause $join, string $expression)
203203
{
204204
throw new RuntimeException('This database engine does not support lateral joins.');
205205
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,13 +235,13 @@ protected function compileUpdateColumns(Builder $query, array $values)
235235
}
236236

237237
/**
238-
* Compile a "lateral join" clause.
238+
* Compile a lateral subquery join clause.
239239
*
240240
* @param \Illuminate\Database\Query\JoinClause $join
241241
* @param string $expression
242242
* @return string
243243
*/
244-
public function joinLateral(JoinClause $join, string $expression)
244+
public function joinSubLateral(JoinClause $join, string $expression)
245245
{
246246
return trim("{$join->type} join lateral {$expression} on true");
247247
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,13 +387,13 @@ protected function compileUpdateColumns(Builder $query, array $values)
387387
}
388388

389389
/**
390-
* Compile a "lateral join" clause.
390+
* Compile a lateral subquery join clause.
391391
*
392392
* @param \Illuminate\Database\Query\JoinClause $join
393393
* @param string $expression
394394
* @return string
395395
*/
396-
public function joinLateral(JoinClause $join, string $expression)
396+
public function joinSubLateral(JoinClause $join, string $expression)
397397
{
398398
return trim("{$join->type} join lateral {$expression} on true");
399399
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,13 +388,13 @@ protected function compileUpdateWithJoins(Builder $query, $table, $columns, $whe
388388
}
389389

390390
/**
391-
* Compile a "lateral join" clause.
391+
* Compile a lateral subquery join clause.
392392
*
393393
* @param \Illuminate\Database\Query\JoinClause $join
394394
* @param string $expression
395395
* @return string
396396
*/
397-
public function joinLateral(JoinClause $join, string $expression)
397+
public function joinSubLateral(JoinClause $join, string $expression)
398398
{
399399
$type = $join->type == 'left' ? 'outer' : 'cross';
400400

tests/Database/DatabaseQueryBuilderTest.php

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2526,16 +2526,16 @@ public function testRightJoinSub()
25262526
$builder->from('users')->rightJoinSub(['foo'], 'sub', 'users.id', '=', 'sub.id');
25272527
}
25282528

2529-
public function testJoinLateral()
2529+
public function testJoinSubLateral()
25302530
{
25312531
$builder = $this->getMySqlBuilder();
25322532
$builder->getConnection()->shouldReceive('getDatabaseName');
2533-
$builder->from('users')->joinLateral('select * from `contacts` where `contracts`.`user_id` = `users`.`id`', 'sub');
2533+
$builder->from('users')->joinSubLateral('select * from `contacts` where `contracts`.`user_id` = `users`.`id`', 'sub');
25342534
$this->assertSame('select * from `users` inner join lateral (select * from `contacts` where `contracts`.`user_id` = `users`.`id`) as `sub` on true', $builder->toSql());
25352535

25362536
$builder = $this->getMySqlBuilder();
25372537
$builder->getConnection()->shouldReceive('getDatabaseName');
2538-
$builder->from('users')->joinLateral(function ($q) {
2538+
$builder->from('users')->joinSubLateral(function ($q) {
25392539
$q->from('contacts')->whereColumn('contracts.user_id', 'users.id');
25402540
}, 'sub');
25412541
$this->assertSame('select * from `users` inner join lateral (select * from `contacts` where `contracts`.`user_id` = `users`.`id`) as `sub` on true', $builder->toSql());
@@ -2545,7 +2545,7 @@ public function testJoinLateral()
25452545
$sub = $this->getMySqlBuilder();
25462546
$sub->getConnection()->shouldReceive('getDatabaseName');
25472547
$eloquentBuilder = new EloquentBuilder($sub->from('contacts')->whereColumn('contracts.user_id', 'users.id'));
2548-
$builder->from('users')->joinLateral($eloquentBuilder, 'sub');
2548+
$builder->from('users')->joinSubLateral($eloquentBuilder, 'sub');
25492549
$this->assertSame('select * from `users` inner join lateral (select * from `contacts` where `contracts`.`user_id` = `users`.`id`) as `sub` on true', $builder->toSql());
25502550

25512551
$sub1 = $this->getMySqlBuilder();
@@ -2558,7 +2558,7 @@ public function testJoinLateral()
25582558

25592559
$builder = $this->getMySqlBuilder();
25602560
$builder->getConnection()->shouldReceive('getDatabaseName');
2561-
$builder->from('users')->joinLateral($sub1, 'sub1')->joinLateral($sub2, 'sub2');
2561+
$builder->from('users')->joinSubLateral($sub1, 'sub1')->joinSubLateral($sub2, 'sub2');
25622562

25632563
$expected = 'select * from `users` ';
25642564
$expected .= 'inner join lateral (select * from `contacts` where `contracts`.`user_id` = `users`.`id` and `name` = ?) as `sub1` on true ';
@@ -2569,69 +2569,69 @@ public function testJoinLateral()
25692569

25702570
$this->expectException(InvalidArgumentException::class);
25712571
$builder = $this->getMySqlBuilder();
2572-
$builder->from('users')->joinLateral(['foo'], 'sub');
2572+
$builder->from('users')->joinSubLateral(['foo'], 'sub');
25732573
}
25742574

2575-
public function testJoinLateralSQLite()
2575+
public function testJoinSubLateralSQLite()
25762576
{
25772577
$this->expectException(RuntimeException::class);
25782578
$builder = $this->getSQLiteBuilder();
25792579
$builder->getConnection()->shouldReceive('getDatabaseName');
2580-
$builder->from('users')->joinLateral(function ($q) {
2580+
$builder->from('users')->joinSubLateral(function ($q) {
25812581
$q->from('contacts')->whereColumn('contracts.user_id', 'users.id');
25822582
}, 'sub')->toSql();
25832583
}
25842584

2585-
public function testJoinLateralPostgres()
2585+
public function testJoinSubLateralPostgres()
25862586
{
25872587
$builder = $this->getPostgresBuilder();
25882588
$builder->getConnection()->shouldReceive('getDatabaseName');
2589-
$builder->from('users')->joinLateral(function ($q) {
2589+
$builder->from('users')->joinSubLateral(function ($q) {
25902590
$q->from('contacts')->whereColumn('contracts.user_id', 'users.id');
25912591
}, 'sub');
25922592
$this->assertSame('select * from "users" inner join lateral (select * from "contacts" where "contracts"."user_id" = "users"."id") as "sub" on true', $builder->toSql());
25932593
}
25942594

2595-
public function testJoinLateralSqlServer()
2595+
public function testJoinSubLateralSqlServer()
25962596
{
25972597
$builder = $this->getSqlServerBuilder();
25982598
$builder->getConnection()->shouldReceive('getDatabaseName');
2599-
$builder->from('users')->joinLateral(function ($q) {
2599+
$builder->from('users')->joinSubLateral(function ($q) {
26002600
$q->from('contacts')->whereColumn('contracts.user_id', 'users.id');
26012601
}, 'sub');
26022602
$this->assertSame('select * from [users] cross apply (select * from [contacts] where [contracts].[user_id] = [users].[id]) as [sub]', $builder->toSql());
26032603
}
26042604

2605-
public function testJoinLateralWithPrefix()
2605+
public function testJoinSubLateralWithPrefix()
26062606
{
26072607
$builder = $this->getMySqlBuilder();
26082608
$builder->getConnection()->shouldReceive('getDatabaseName');
26092609
$builder->getGrammar()->setTablePrefix('prefix_');
2610-
$builder->from('users')->joinLateral('select * from `contacts` where `contracts`.`user_id` = `users`.`id`', 'sub');
2610+
$builder->from('users')->joinSubLateral('select * from `contacts` where `contracts`.`user_id` = `users`.`id`', 'sub');
26112611
$this->assertSame('select * from `prefix_users` inner join lateral (select * from `contacts` where `contracts`.`user_id` = `users`.`id`) as `prefix_sub` on true', $builder->toSql());
26122612
}
26132613

2614-
public function testLeftJoinLateral()
2614+
public function testLeftJoinSubLateral()
26152615
{
26162616
$builder = $this->getMySqlBuilder();
26172617
$builder->getConnection()->shouldReceive('getDatabaseName');
26182618

26192619
$sub = $this->getMySqlBuilder();
26202620
$sub->getConnection()->shouldReceive('getDatabaseName');
26212621

2622-
$builder->from('users')->leftJoinLateral($sub->from('contacts')->whereColumn('contracts.user_id', 'users.id'), 'sub');
2622+
$builder->from('users')->leftJoinSubLateral($sub->from('contacts')->whereColumn('contracts.user_id', 'users.id'), 'sub');
26232623
$this->assertSame('select * from `users` left join lateral (select * from `contacts` where `contracts`.`user_id` = `users`.`id`) as `sub` on true', $builder->toSql());
26242624

26252625
$this->expectException(InvalidArgumentException::class);
26262626
$builder = $this->getBuilder();
2627-
$builder->from('users')->leftJoinLateral(['foo'], 'sub');
2627+
$builder->from('users')->leftJoinSubLateral(['foo'], 'sub');
26282628
}
26292629

2630-
public function testLeftJoinLateralSqlServer()
2630+
public function testLeftJoinSubLateralSqlServer()
26312631
{
26322632
$builder = $this->getSqlServerBuilder();
26332633
$builder->getConnection()->shouldReceive('getDatabaseName');
2634-
$builder->from('users')->leftJoinLateral(function ($q) {
2634+
$builder->from('users')->leftJoinSubLateral(function ($q) {
26352635
$q->from('contacts')->whereColumn('contracts.user_id', 'users.id');
26362636
}, 'sub');
26372637
$this->assertSame('select * from [users] outer apply (select * from [contacts] where [contracts].[user_id] = [users].[id]) as [sub]', $builder->toSql());

0 commit comments

Comments
 (0)