Yajra DataTables — это мощный плагин jQuery, который обеспечивает интерактивный способ отображения табличных данных и управления ими в приложениях Laravel. Одной из его ключевых особенностей является возможность фильтровать столбцы данных, что позволяет пользователям искать и сужать отображаемые данные на основе определенных критериев. В этой статье мы рассмотрим различные методы реализации фильтрации данных в Yajra DataTables, сопровождаемые примерами кода.
Метод 1: базовая фильтрация столбцов
Самый простой способ включить фильтрацию столбцов — использовать встроенные функции поиска, предоставляемые Yajra DataTables. По умолчанию для каждого столбца отображается поле ввода поиска, позволяющее пользователям вводить ключевые слова и соответствующим образом фильтровать данные. Вот пример:
// Controller
public function index()
{
return view('datatable.index')
->with('dataTable', YourDataTable::eloquent());
}
// DataTable
public function query()
{
$query = YourModel::query();
return $this->applyScopes($query);
}
Метод 2: настраиваемая фильтрация столбцов
Yajra DataTables также позволяет реализовать настраиваемые фильтры для определенных столбцов, предоставляя более расширенные возможности фильтрации. Этого можно добиться, расширив класс DataTable и переопределив метод filterColumn(). Вот пример:
// DataTable
use Yajra\DataTables\Html\Column;
class YourDataTable extends DataTable
{
// ...
public function filterColumn($query, $keyword, $column)
{
if ($column->getName() === 'name') {
$query->where('name', 'LIKE', "%$keyword%");
}
// Add more custom filters for other columns as needed
}
// ...
}
Метод 3: фильтрация на стороне сервера
В ситуациях, когда приходится иметь дело с большими наборами данных, часто предпочтительнее выполнять фильтрацию на стороне сервера для оптимизации производительности. Yajra DataTables предоставляет удобный способ добиться этого, используя построитель запросов Laravel и запросы AJAX. Вот пример:
// Controller
public function index(Request $request)
{
if ($request->ajax()) {
$dataTable = YourDataTable::query();
return $dataTable->toJson();
}
return view('datatable.index');
}
// DataTable
public function query()
{
$query = YourModel::query();
// Apply filters based on request parameters
if ($this->request->filled('name')) {
$query->where('name', 'LIKE', "%{$this->request->get('name')}%");
}
// Add more filters for other columns as needed
return $this->applyScopes($query);
}
В этой статье мы рассмотрели различные методы реализации фильтрации данных в Yajra DataTables. Мы начали с базовой фильтрации столбцов с использованием встроенной функции поиска, а затем перешли к пользовательской фильтрации столбцов для более сложных сценариев. Наконец, мы обсудили фильтрацию на стороне сервера для оптимизации производительности при работе с большими наборами данных. Используя эти методы, вы можете повысить удобство использования и эффективность своих приложений Laravel на базе Yajra DataTables.
Не забудьте использовать соответствующий метод фильтрации в зависимости от ваших конкретных требований, будь то базовая или настраиваемая фильтрация или фильтрация на стороне сервера, чтобы обеспечить эффективную и удобную для пользователя фильтрацию данных.