From b844ebb94daa9ee0319ef7d7f51ac0a7830f2399 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Nilsved?= Date: Fri, 27 Nov 2020 10:47:14 +0100 Subject: [PATCH] Create failing test for withMin() on self-relation --- tests/Database/DatabaseEloquentBuilderTest.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/Database/DatabaseEloquentBuilderTest.php b/tests/Database/DatabaseEloquentBuilderTest.php index cfdacede80f6..6e0a59148954 100755 --- a/tests/Database/DatabaseEloquentBuilderTest.php +++ b/tests/Database/DatabaseEloquentBuilderTest.php @@ -834,6 +834,21 @@ public function testWithMinOnBelongsToMany() $this->assertSame('select "eloquent_builder_test_model_parent_stubs".*, (select min("eloquent_builder_test_model_far_related_stubs"."id") from "eloquent_builder_test_model_far_related_stubs" inner join "user_role" on "eloquent_builder_test_model_far_related_stubs"."id" = "user_role"."related_id" where "eloquent_builder_test_model_parent_stubs"."id" = "user_role"."self_id") as "roles_min_id" from "eloquent_builder_test_model_parent_stubs"', $builder->toSql()); } + public function testWithMinOnSelfRelated() + { + $model = new EloquentBuilderTestModelSelfRelatedStub; + + $sql = $model->withMin('childFoos', 'created_at')->toSql(); + + // alias has a dynamic hash, so replace with a static string for comparison + $alias = 'self_alias_hash'; + $aliasRegex = '/\b(laravel_reserved_\d)(\b|$)/i'; + + $sql = preg_replace($aliasRegex, $alias, $sql); + + $this->assertSame('select "self_related_stubs".*, (select min("self_alias_hash"."created_at") from "self_related_stubs" as "self_alias_hash" where "self_related_stubs"."id" = "self_alias_hash"."parent_id") as "child_foos_min_created_at" from "self_related_stubs"', $sql); + } + public function testWithCountAndConstraintsAndHaving() { $model = new EloquentBuilderTestModelParentStub;