#ModelTableSelect not filtering by visibility

9 messages · Page 1 of 1 (latest)

fossil sequoia
#

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'),
    ),    

Despite the modifyQueryUsing filter, it's still listing all media. Is there something I'm missing?

errant berryBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

maiden fossil
#

the table configuration class needs to have a modifyQueryUsing() scope on it too

fossil sequoia
#

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);
    }
}

But the effect isn't being applied. How can I resolve this?

maiden fossil
#

that function doesnt exist like that, did ai generate it?

#

its $table->modifyQueryUsing() only

fossil sequoia
#

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)
        );
    }
}
fossil sequoia
maiden fossil