Освоение фильтрации данных в Yajra DataTables: подробное руководство

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.

Не забудьте использовать соответствующий метод фильтрации в зависимости от ваших конкретных требований, будь то базовая или настраиваемая фильтрация или фильтрация на стороне сервера, чтобы обеспечить эффективную и удобную для пользователя фильтрацию данных.