fix: Global search soft deleted models

This commit is contained in:
Dan Harrin
2025-07-11 12:27:50 +01:00
parent a96f024c50
commit 29a4d68fa6
4 changed files with 17 additions and 11 deletions
@@ -114,7 +114,7 @@ class ResourceClassGenerator extends ClassGenerator
$this->addTableMethodToClass($class);
$this->addGetRelationsMethodToClass($class);
$this->addGetPagesMethodToClass($class);
$this->addGetEloquentQueryMethodToClass($class);
$this->addGetRecordRouteBindingEloquentQueryMethodToClass($class);
}
protected function addModelPropertyToClass(ClassType $class): void
@@ -328,28 +328,28 @@ class ResourceClassGenerator extends ClassGenerator
protected function configureGetPagesMethod(Method $method): void {}
protected function addGetEloquentQueryMethodToClass(ClassType $class): void
protected function addGetRecordRouteBindingEloquentQueryMethodToClass(ClassType $class): void
{
if (! $this->isSoftDeletable()) {
return;
}
$method = $class->addMethod('getEloquentQuery')
$method = $class->addMethod('getRecordRouteBindingEloquentQuery')
->setPublic()
->setStatic()
->setReturnType(Builder::class)
->setBody(
<<<PHP
return parent::getEloquentQuery()
return parent::getRecordRouteBindingEloquentQuery()
->withoutGlobalScopes([
{$this->simplifyFqn(SoftDeletingScope::class)}::class,
]);
PHP
);
$this->configureGetEloquentQueryMethod($method);
$this->configureGetRecordRouteBindingEloquentQueryMethod($method);
}
protected function configureGetEloquentQueryMethod(Method $method): void {}
protected function configureGetRecordRouteBindingEloquentQueryMethod(Method $method): void {}
public function getFqn(): string
{
@@ -5,6 +5,7 @@ namespace Filament\Resources\Resource\Concerns;
use Closure;
use Filament\Facades\Filament;
use Filament\Panel;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Stringable;
@@ -25,9 +26,14 @@ trait HasRoutes
*/
protected static string | array $withoutRouteMiddleware = [];
public static function getRecordRouteBindingEloquentQuery(): Builder
{
return static::getEloquentQuery();
}
public static function resolveRecordRouteBinding(int | string $key, ?Closure $modifyQuery = null): ?Model
{
$query = static::getEloquentQuery();
$query = static::getRecordRouteBindingEloquentQuery();
if ($modifyQuery) {
$query = $modifyQuery($query) ?? $query;
@@ -66,9 +66,9 @@ class PostResource extends Resource
];
}
public static function getEloquentQuery(): Builder
public static function getRecordRouteBindingEloquentQuery(): Builder
{
return parent::getEloquentQuery()
return parent::getRecordRouteBindingEloquentQuery()
->withoutGlobalScopes([
SoftDeletingScope::class,
]);
@@ -48,9 +48,9 @@ class PostResource extends Resource
];
}
public static function getEloquentQuery(): Builder
public static function getRecordRouteBindingEloquentQuery(): Builder
{
return parent::getEloquentQuery()
return parent::getRecordRouteBindingEloquentQuery()
->withoutGlobalScopes([
SoftDeletingScope::class,
]);