У меня есть ресурс с таблицей. Я хочу изменить запрос таблицы на основе условия, т.е. наличия фильтра.
->modifyQueryUsing(function (Builder $query){
if (tableFilter)
{
return $query->with('studentAcademics');
}
else
{
return $query->whereNull('id');
}
})
Как я могу проверить, есть ли активный фильтр таблицы?
🤔 А знаете ли вы, что...
В Laravel используется язык программирования PHP.
В моем случае это сработало:
->modifyQueryUsing(function (Builder $query, Table $table) {
$filters = $table->getFilters();
// Check if any filters are applied
$hasActiveFilters = collect($filters)
->some(fn ($filter) => $filter->isActive());
if ($hasActiveFilters) {
// If filters are active, modify the query accordingly
return $query->with('studentAcademics');
} else {
// If no filters are active, apply a different query modification
return $query->whereNull('id');
}
})
Чтобы проверить, существует ли активный табличный фильтр в Laravel Filament, и соответствующим образом изменить запрос Eloquent, вы можете использовать метод getFilters в методеmodifyQueryUsing.
getFilters: извлекает все фильтры, примененные к таблице.
isActive: проверяет, активен ли в данный момент конкретный фильтр.
Это решило мою проблему
->modifyQueryUsing(function (Builder $query, Table $table) {
$filters = $table->getFilters();
// Check if any filters are applied
$hasActiveFilters = collect($filters)
->some(function ($filter){
return $filter->getActiveCount() > 0 ? true:false;
});
if ($hasActiveFilters) {
// If filters are active, modify the query accordingly
return $query->with('studentAcademics');
} else {
// If no filters are active, apply a different query modification
return $query->whereNull('id');
}
})