Skip to content

Commit 9fbd691

Browse files
Baspaclaude
andauthored
fix: remove table aliasing in SuppressionResource for Filament v4 (#112)
Filament v4 uses getQualifiedKeyName() which returns the actual table name (e.g., "mail_events.id") instead of the alias. This fix removes table aliasing and uses full table names to ensure compatibility. Fixes #68 Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent ef2c6b5 commit 9fbd691

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/Resources/SuppressionResource.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -79,21 +79,20 @@ public static function getEloquentQuery(): Builder
7979
$eventTable = config('mails.database.tables.events');
8080

8181
return parent::getEloquentQuery()
82-
->from("$eventTable as events")
83-
->join("$mailTable as mails", 'events.mail_id', '=', 'mails.id')
84-
->where(function ($query) {
85-
$query->where('events.type', EventType::HARD_BOUNCED)
86-
->orWhere('events.type', EventType::COMPLAINED);
82+
->join($mailTable, "$eventTable.mail_id", '=', "$mailTable.id")
83+
->where(function ($query) use ($eventTable) {
84+
$query->where("$eventTable.type", EventType::HARD_BOUNCED)
85+
->orWhere("$eventTable.type", EventType::COMPLAINED);
8786
})
88-
->whereNull('events.unsuppressed_at')
89-
->whereIn('mails.to', function ($query) use ($eventTable) {
87+
->whereNull("$eventTable.unsuppressed_at")
88+
->whereIn("$mailTable.to", function ($query) use ($eventTable) {
9089
$query->select('to')
9190
->from($eventTable)
9291
->where('type', EventType::HARD_BOUNCED)
9392
->whereNull('unsuppressed_at')
9493
->groupBy('to');
9594
})
96-
->select('events.*', 'mails.to')
95+
->select("$eventTable.*", "$mailTable.to")
9796
->addSelect([
9897
'has_complained' => MailEvent::select('m.id')
9998
->from("$eventTable as me")
@@ -103,14 +102,15 @@ public static function getEloquentQuery(): Builder
103102
})
104103
->take(1),
105104
])
106-
->latest('events.occurred_at')
107-
->orderBy('events.occurred_at', 'desc');
105+
->latest("$eventTable.occurred_at");
108106
}
109107

110108
public static function table(Table $table): Table
111109
{
110+
$eventTable = config('mails.database.tables.events');
111+
112112
return $table
113-
->defaultSort('occurred_at', 'desc')
113+
->defaultSort("$eventTable.occurred_at", 'desc')
114114
->columns([
115115
TextColumn::make('to')
116116
->label(__('Email address'))

0 commit comments

Comments
 (0)