From fc672e4f4aba0a769d31dfc29c2cc11567a7be73 Mon Sep 17 00:00:00 2001 From: Jp Date: Thu, 12 Feb 2026 16:12:35 +0800 Subject: [PATCH] feat(TransmittalResource): enhance search functionality across related models Implement wildcard search on transmittal series, notes, and files to improve user experience when filtering records. Also extend search capabilities to client company and branch code fields for more comprehensive filtering. --- .../Resources/TransmittalResource.php | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/app/Filament/Resources/TransmittalResource.php b/app/Filament/Resources/TransmittalResource.php index 6ab0df1..96e0be8 100644 --- a/app/Filament/Resources/TransmittalResource.php +++ b/app/Filament/Resources/TransmittalResource.php @@ -45,16 +45,36 @@ class TransmittalResource extends Resource ->columns([ Tables\Columns\Layout\Split::make([ Tables\Columns\TextColumn::make('series') - ->searchable() + ->searchable(query: function (Builder $query, string $search): Builder { + $wildcardSearch = '%' . str_replace(' ', '%', $search) . '%'; + + return $query->where(function (Builder $query) use ($wildcardSearch) { + $query->where('series', 'like', $wildcardSearch) + ->orWhereHas('notes', function (Builder $query) use ($wildcardSearch) { + $query->where('comment', 'like', $wildcardSearch); + }) + ->orWhereHas('files', function (Builder $query) use ($wildcardSearch) { + $query->where('description', 'like', $wildcardSearch); + }); + }); + }) ->label('Series') ->weight(FontWeight::Bold) ->columnSpan(2), Tables\Columns\Layout\Stack::make([ Tables\Columns\TextColumn::make('client.company') - ->searchable() + ->searchable(query: function (Builder $query, string $search): Builder { + return $query->whereHas('client', function (Builder $query) use ($search) { + $query->where('company', 'like', '%' . str_replace(' ', '%', $search) . '%'); + }); + }) ->weight(FontWeight::SemiBold)->label('Client'), Tables\Columns\TextColumn::make('branch.code') - ->searchable() + ->searchable(query: function (Builder $query, string $search): Builder { + return $query->whereHas('branch', function (Builder $query) use ($search) { + $query->where('code', 'like', '%' . str_replace(' ', '%', $search) . '%'); + }); + }) ->label('Branch'), ]), ]),