Skip to content

Commit 541ad10

Browse files
snags88taylorotwell
authored andcommitted
Allow parseSub to operate on EloquentBuilder. Add test (#24788)
1 parent 648bdae commit 541ad10

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

src/Illuminate/Database/Query/Builder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ protected function createSub($query)
319319
*/
320320
protected function parseSub($query)
321321
{
322-
if ($query instanceof self) {
322+
if ($query instanceof self || $query instanceof EloquentBuilder) {
323323
return [$query->toSql(), $query->getBindings()];
324324
} elseif (is_string($query)) {
325325
return [$query, []];

tests/Database/DatabaseQueryBuilderTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Illuminate\Pagination\LengthAwarePaginator;
99
use Illuminate\Database\Query\Expression as Raw;
1010
use Illuminate\Pagination\AbstractPaginator as Paginator;
11+
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
1112

1213
class DatabaseQueryBuilderTest extends TestCase
1314
{
@@ -1371,6 +1372,11 @@ public function testJoinSub()
13711372
}, 'sub', 'users.id', '=', 'sub.id');
13721373
$this->assertEquals('select * from "users" inner join (select * from "contacts") as "sub" on "users"."id" = "sub"."id"', $builder->toSql());
13731374

1375+
$builder = $this->getBuilder();
1376+
$eloquentBuilder = new EloquentBuilder($this->getBuilder()->from('contacts'));
1377+
$builder->from('users')->joinSub($eloquentBuilder, 'sub', 'users.id', '=', 'sub.id');
1378+
$this->assertEquals('select * from "users" inner join (select * from "contacts") as "sub" on "users"."id" = "sub"."id"', $builder->toSql());
1379+
13741380
$builder = $this->getBuilder();
13751381
$sub1 = $this->getBuilder()->from('contacts')->where('name', 'foo');
13761382
$sub2 = $this->getBuilder()->from('contacts')->where('name', 'bar');

0 commit comments

Comments
 (0)