Filament Table ToggleColumn not updating record or triggering beforeStateUpdated()

Hi everyone, I’m trying to update a record using a ToggleColumn (I also tried CheckboxColumn, same issue). The toggle shows up fine, but when I click it, nothing updates in the database. Here’s how I implemented it:
->query($this->group->members()->getQuery())
->columns([
TextColumn::make('first_name')
->formatStateUsing(fn($record) => $record->first_name . ' ' . $record->last_name)
->label('Member Name'),

ToggleColumn::make('is_leader')
->getStateUsing(fn($record) => $this->group->leader_id === $record->student_id)
->beforeStateUpdated(function ($record) {
Group::where('id', $this->group->id)
->update([
'leader_id' => $record->student_id
]);

Notification::make()
->title('Group leader updated successfully')
->success()
->send();
})
->label('Is Leader'),
])
->query($this->group->members()->getQuery())
->columns([
TextColumn::make('first_name')
->formatStateUsing(fn($record) => $record->first_name . ' ' . $record->last_name)
->label('Member Name'),

ToggleColumn::make('is_leader')
->getStateUsing(fn($record) => $this->group->leader_id === $record->student_id)
->beforeStateUpdated(function ($record) {
Group::where('id', $this->group->id)
->update([
'leader_id' => $record->student_id
]);

Notification::make()
->title('Group leader updated successfully')
->success()
->send();
})
->label('Is Leader'),
])
The toggle displays correctly and shows the proper initial state, but clicking it doesn’t trigger the update or change anything in the database. Am I missing something? How can I make this column actually update the record when toggled?
1 Reply
Dennis Koch
Dennis Koch2mo ago
Is it running the code in beforeStateUpdated()?

Did you find this page helpful?