From f45ca748ba32d90443b702366cc58b0933ab35c0 Mon Sep 17 00:00:00 2001 From: Jesper Noordsij Date: Tue, 18 Feb 2025 18:00:11 +0100 Subject: [PATCH 1/2] Add parameter typing for closure to addGlobalScope method --- .../Database/Eloquent/Concerns/HasGlobalScopes.php | 4 ++-- types/Database/Eloquent/Model.php | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php b/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php index a67fe899bad4..4ca9fc49dd27 100644 --- a/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php +++ b/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php @@ -40,8 +40,8 @@ public static function resolveGlobalScopeAttributes() /** * Register a new global scope on the model. * - * @param \Illuminate\Database\Eloquent\Scope|\Closure|string $scope - * @param \Illuminate\Database\Eloquent\Scope|\Closure|null $implementation + * @param \Illuminate\Database\Eloquent\Scope|(\Closure(\Illuminate\Database\Eloquent\Builder): mixed)|string $scope + * @param \Illuminate\Database\Eloquent\Scope|(\Closure(\Illuminate\Database\Eloquent\Builder): mixed)|null $implementation * @return mixed * * @throws \InvalidArgumentException diff --git a/types/Database/Eloquent/Model.php b/types/Database/Eloquent/Model.php index 3c9be34c4b11..663ec93bea21 100644 --- a/types/Database/Eloquent/Model.php +++ b/types/Database/Eloquent/Model.php @@ -25,6 +25,12 @@ function test(User $user, Post $post, Comment $comment, Article $article): void return ['string' => 'string']; })); + User::addGlobalScope('ancient', function ($builder) { + assertType('Illuminate\Database\Eloquent\Builder', $builder); + + $builder->where('created_at', '<', now()->subYears(2000)); + }); + assertType('Illuminate\Database\Eloquent\Builder', User::query()); assertType('Illuminate\Database\Eloquent\Builder', $user->newQuery()); assertType('Illuminate\Database\Eloquent\Builder', $user->withTrashed()); From 027921bbc98e2de3004af57ad824d00fd980cbdd Mon Sep 17 00:00:00 2001 From: Jesper Noordsij Date: Tue, 18 Feb 2025 18:10:03 +0100 Subject: [PATCH 2/2] Add type for getGlobalScope as well --- src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php b/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php index 4ca9fc49dd27..df69409ec835 100644 --- a/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php +++ b/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php @@ -93,7 +93,7 @@ public static function hasGlobalScope($scope) * Get a global scope registered with the model. * * @param \Illuminate\Database\Eloquent\Scope|string $scope - * @return \Illuminate\Database\Eloquent\Scope|\Closure|null + * @return \Illuminate\Database\Eloquent\Scope|(\Closure(\Illuminate\Database\Eloquent\Builder): mixed)|null */ public static function getGlobalScope($scope) {