diff --git a/src/Illuminate/Database/Eloquent/Attributes/Scope.php b/src/Illuminate/Database/Eloquent/Attributes/Scope.php index ff7d1048cba..d340db490f9 100644 --- a/src/Illuminate/Database/Eloquent/Attributes/Scope.php +++ b/src/Illuminate/Database/Eloquent/Attributes/Scope.php @@ -9,9 +9,6 @@ class Scope { /** * Create a new attribute instance. - * - * @param array|string $classes - * @return void */ public function __construct() { diff --git a/src/Illuminate/Database/Eloquent/Model.php b/src/Illuminate/Database/Eloquent/Model.php index b4c1c449d17..8137fa1233a 100644 --- a/src/Illuminate/Database/Eloquent/Model.php +++ b/src/Illuminate/Database/Eloquent/Model.php @@ -2402,7 +2402,7 @@ public function __call($method, $parameters) public static function __callStatic($method, $parameters) { if (static::isScopeMethodWithAttribute($method)) { - $parameters = [static::query(), ...$parameters]; + return static::query()->$method(...$parameters); } return (new static)->$method(...$parameters); diff --git a/tests/Integration/Database/EloquentNamedScopeAttributeTest.php b/tests/Integration/Database/EloquentNamedScopeAttributeTest.php index 1ad2576ae41..5d1441a43e3 100644 --- a/tests/Integration/Database/EloquentNamedScopeAttributeTest.php +++ b/tests/Integration/Database/EloquentNamedScopeAttributeTest.php @@ -4,6 +4,7 @@ use Orchestra\Testbench\Attributes\WithMigration; use Orchestra\Testbench\TestCase; +use PHPUnit\Framework\Attributes\DataProvider; #[WithMigration] class EloquentNamedScopeAttributeTest extends TestCase @@ -20,17 +21,27 @@ protected function setUp(): void ); } - public function test_it_can_query_named_scoped_from_the_query_builder() + #[DataProvider('namedScopeDataProvider')] + public function test_it_can_query_named_scoped_from_the_query_builder(string $methodName) { - $query = Fixtures\NamedScopeUser::query()->verified(true); + $query = Fixtures\NamedScopeUser::query()->{$methodName}(true); $this->assertSame($this->query, $query->toRawSql()); } - public function test_it_can_query_named_scoped_from_static_query() + #[DataProvider('namedScopeDataProvider')] + public function test_it_can_query_named_scoped_from_static_query(string $methodName) { - $query = Fixtures\NamedScopeUser::verified(true); + $query = Fixtures\NamedScopeUser::{$methodName}(true); $this->assertSame($this->query, $query->toRawSql()); } + + public static function namedScopeDataProvider(): array + { + return [ + 'scope with return' => ['verified'], + 'scope without return' => ['verifiedWithoutReturn'], + ]; + } } diff --git a/tests/Integration/Database/Fixtures/NamedScopeUser.php b/tests/Integration/Database/Fixtures/NamedScopeUser.php index 111258eb348..b33b8823dc2 100644 --- a/tests/Integration/Database/Fixtures/NamedScopeUser.php +++ b/tests/Integration/Database/Fixtures/NamedScopeUser.php @@ -27,6 +27,12 @@ protected function verified(Builder $builder, bool $email = true) ); } + #[NamedScope] + protected function verifiedWithoutReturn(Builder $builder, bool $email = true) + { + $this->verified($builder, $email); + } + public function scopeVerifiedUser(Builder $builder, bool $email = true) { return $builder->when(