ModelTableSelect not filtering by visibility

I'm using ModalTableSelect to choose a media item, and I want to show only those with visibility = Opengraph. However, all media items are showing.
ModalTableSelect::make('media_id')
->label('Media')
->relationship(
name: 'media',
titleAttribute: 'caption',
modifyQueryUsing: fn ($query) => $query->where('visibility', VisibilityType::Opengraph)
)
->tableConfiguration(MediaTable::class)
->required()
->selectAction(
fn (Action $action) => $action
->label('Select a media')
->modalHeading('Search for a media')
->modalSubmitActionLabel('Confirm selection'),
),
ModalTableSelect::make('media_id')
->label('Media')
->relationship(
name: 'media',
titleAttribute: 'caption',
modifyQueryUsing: fn ($query) => $query->where('visibility', VisibilityType::Opengraph)
)
->tableConfiguration(MediaTable::class)
->required()
->selectAction(
fn (Action $action) => $action
->label('Select a media')
->modalHeading('Search for a media')
->modalSubmitActionLabel('Confirm selection'),
),
Despite the modifyQueryUsing filter, it's still listing all media. Is there something I'm missing?
6 Replies
Dan Harrin
Dan Harrin4mo ago
the table configuration class needs to have a modifyQueryUsing() scope on it too
Boa Hancock
Boa HancockOP4mo ago
Adding ->modifyQueryUsing(fn (Builder $query) => $query->where('visibility', VisibilityType::Opengraph)) in MediaTable.php works. However, I want to extend MediaTable.php in OpengraphMediaTable.php:
<?php

namespace App\Filament\Resources\Media\Tables;

use App\Enums\VisibilityType;
use Illuminate\Database\Eloquent\Builder;

class OpengraphMediaTable extends MediaTable
{
public static function modifyQueryUsing(Builder $query): Builder
{
return $query->where('visibility', VisibilityType::Opengraph);
}
}
<?php

namespace App\Filament\Resources\Media\Tables;

use App\Enums\VisibilityType;
use Illuminate\Database\Eloquent\Builder;

class OpengraphMediaTable extends MediaTable
{
public static function modifyQueryUsing(Builder $query): Builder
{
return $query->where('visibility', VisibilityType::Opengraph);
}
}
But the effect isn't being applied. How can I resolve this?
Dan Harrin
Dan Harrin4mo ago
that function doesnt exist like that, did ai generate it? its $table->modifyQueryUsing() only
Boa Hancock
Boa HancockOP4mo ago
I added this one, and it's working
<?php

namespace App\Filament\Resources\Media\Tables;


use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;

// Enums
use App\Enums\VisibilityType;

class OpengraphMediaTable extends MediaTable
{
public static function configure(Table $table): Table
{
$table = parent::configure($table);

return $table->modifyQueryUsing(fn (Builder $query) =>
$query->where('visibility', VisibilityType::Opengraph)
);
}
}
<?php

namespace App\Filament\Resources\Media\Tables;


use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;

// Enums
use App\Enums\VisibilityType;

class OpengraphMediaTable extends MediaTable
{
public static function configure(Table $table): Table
{
$table = parent::configure($table);

return $table->modifyQueryUsing(fn (Builder $query) =>
$query->where('visibility', VisibilityType::Opengraph)
);
}
}
Claude, yes
Dan Harrin
Dan Harrin4mo ago
read the docs instead 🤣
Boa Hancock
Boa HancockOP4mo ago
Sure, will do; else I would end up with like this one

Did you find this page helpful?