定制 rostislav/laravel-filters 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

rostislav/laravel-filters

最新稳定版本:v1.0.6.6

Composer 安装命令:

composer require rostislav/laravel-filters

包简介

README 文档

README

# 📦 Laravel Filters — Универсальный фильтр для Eloquent и Query Builder

> Простой, мощный и гибкий инструмент для фильтрации, сортировки и поиска данных в Laravel через URL-параметры.

**Laravel Filters** позволяет вам строить сложные API-запросы без написания ручных `where`, `with`, `has`, `orderBy` и т.д. — всё делается через URL-параметры. Подходит для админок, API, дашбордов и любых систем с фильтрами.

---

## ✅ Возможности

| Функция | Описание |
|--------|----------|
| 🔍 **Фильтрация по полям** | `?filterEQ[status]=active&filterEQ[category_id]=5` |
| 🧩 **Фильтрация по связям (whereHas)** | `?filterEQ[category.name]=Books&filterLIKE[user.email]=@gmail.com` |
| 🔗 **Eager loading (`with`)** | `?extends=user,posts` |
| 📊 **Подсчёт связанных моделей (`withCount`)** | `?extendsCount=comments,likes` |
| ⚖️ **Поиск по нескольким полям (`filterQ`)** (требуется указывать по каким полям) | `?filterQ=John` — ищет по `name`, `email`, `phone` |
| 🔁 **Исключение связей (`doesntHave`)** | `?doesntHave=posts` — только пользователи без постов |
| 📏 **Сортировка** | `?sort=-created_at,name` — по убыванию/возрастанию |
| 📑 **Пагинация** | Автоматическая с `?limit=20` |

---

## 🛠 Установка

```bash
composer require rostislav/laravel-filters

## Использование

use Illuminate\Http\Request;
use Rostislav\LaravelFilters\Filter;

// В контроллере:
public function index(Request $request) // получение списка
{
    return Filter::all(
        $request,                     // Запрос от пользователя
        Post::class,                  // Модель или QueryBuilder
        ['name', 'email', 'status'],  // Разрешённые для фильтрации поля
        [],                           // Вложенные условия (см. ниже)
        ['title', 'LIKE'],            // Поля для поиска filterQ
        ['name', 'LIKE', 'category'], // Поиск в таблице по связи с category
        ['content', 'LIKE'],
    );
}

public function show(Request $request, int $id) // получение одной записи
{
    return Filter::one(
        $request,                           // Запрос от пользователя
        Post::class,                        // Модель
        $id,                                // Идентификатор
        [['email', 'like', '@company.com']] // Дополнительные условия
    );
}

## Доступные фильтры:
пример использования: filterEQ[title]=name
В ORM - Post::where('title', 'name')

Доступные значения:
EQ - =
NEQ - !=
EQN - IS NULL
NEQN - IS NOT NULL
GEQ - >=
LEQ - <=
GE - >
LE - <
LIKE - <
IN - in
NotIN - not in

统计信息

  • 总下载量: 85
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-07-01