PHPackages                             forest-lynx/laravel-filterable-light - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. forest-lynx/laravel-filterable-light

ActiveLibrary

forest-lynx/laravel-filterable-light
====================================

Фильтрация модели Eloquent Laravel основе данных модели.

v0.0.1(2y ago)010MITPHPPHP ^8.0

Since Jul 28Pushed 2y ago1 watchersCompare

[ Source](https://github.com/forest-lynx/laravel-filterable-light)[ Packagist](https://packagist.org/packages/forest-lynx/laravel-filterable-light)[ Docs](https://github.com/forest-lynx/laravel-filterable-light)[ RSS](/packages/forest-lynx-laravel-filterable-light/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (5)Versions (2)Used By (0)

Фильтрация для моделей Laravel
==============================

[](#фильтрация-для-моделей-laravel)

[![Software License](https://camo.githubusercontent.com/074b89bca64d3edc93a1db6c7e3b1636b874540ba91d66367c0e5e354c56d0ea/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e737667)](LICENSE)

[![Laravel](https://camo.githubusercontent.com/25f5eb4448d4070222d178207fd71dd4f6a4187224f7ef05938e644e84af17cc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d392b2d4646324432303f7374796c653d666f722d7468652d6261646765266c6f676f3d6c61726176656c)](Laravel) [![PHP](https://camo.githubusercontent.com/c7708de0b3e7f74775dfb728df6422153b9d8282d116a3cc20f83c96a2466a06/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382b2d3737374242343f7374796c653d666f722d7468652d6261646765266c6f676f3d706870)](PHP)

Пакет представляет собой удобный инструмент для добавления метода фильтрации к моделям Eloquent в Laravel. При помощи этого пакета можно легко преобразовывать запросы к базе данных на основе данных, полученных от пользователя. Особенность этого пакета заключается в генерации параметров фильтрации на основе структуры модели и схемы соответствующей таблицы в базе данных. Пакет анализирует поля модели, ключи полнотекстового поиска и связи с другими таблицами, чтобы обеспечить максимально удобный процесс фильтрации данных.

Table of Contents
-----------------

[](#table-of-contents)

- [Установка](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0)
- [Настройка](#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0)
- [Применение](#%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5)
- [Лицензия](#%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F)

Установка
---------

[](#установка)

Команда для установки:

```
composer require forest-lynx/laravel-filterable-light
```

Настройка
---------

[](#настройка)

Если необходимо опубликуйте файла конфигурации выполнив команду:

```
php artisan vendor:publish --tag=filterable-light-config
```

Или вы можете осуществить настройку переменных пакета в вашем конфигурационном файле (`.env`).

Описание настроек:

`FILTERABLE_L_MODELS_PATH` Отвечает за пространство имен моделей. По умолчанию "`App\\Models\\`"

`FILTERABLE_L_SKIP_MODELS` Массив моделей которые по умолчанию необходимо исключить из фильтрации.

`FILTERABLE_L_SKIP_FIELDS_DEFAULT` Массив свойств модели по умолчанию которые не участвуют в фильтрации

> Применятся ко всем моделям.

`FILTERABLE_L_INCLUDE_FIELDS_RELATED` (Логическое) Исключать ли из допустимых условий фильтрации, свойства модели отвечающие за связь с другими таблицами. Исключение таких полей происходит из принципов конвенции наименований применяемых в Laravel.

Добавьте `Trait` в модели для которых планируется применение фильтрации:

```
//...
use ForestLynx\FilterableLight\Trait\HasFilterable;

class Card extends Model{
    use HasFilterable;
}
```

У модели становятся доступны свойства:

```
//...
    protected $filtering = true;
    protected $filtering_fields = [];
    protected $filtering_fields_hidden = []
//...
```

Свойство `$filtering` (логическое значение) отвечает за применение к модели фильтрации, а так же генерацию допустимых условий фильтрации. По умолчанию `true`. Свойство может быть не объявлено в модели.

Свойство `$filtering_fields` массив полей участвующих в фильтрации, имеет вид. Свойство может быть не объявлено в модели, в таком случае сведения о полях доступных для фильтрации берутся из свойства `$fillable` указанных для модели.

Свойство `$filtering_fields_hidden` определяет скрытые от фильтрации свойства модели.

В пакете применяются `Attribute` для дополнительной настройки условий фильтрации модели.

Для методов участвующих в связях с другими моделями может быть применен аттрибут `FilteringBlocked` который исключает метод из допустимых условий фильтрации Примеры использования:

```
//...
use ForestLynx\FilterableLight\Attributes\FilteringBlocked;

class Product extends Model{
    use HasFilterable;
    //...
    #[FilteringBlocked]
    public function price(): HasOne
    {
    //...
```

Применение
----------

[](#применение)

```
//...
    Card::filter(`$filters`);
//...
```

Параметр метода должен принимать Illuminate\\Http\\Request с полем `filters` или массив вида:

```
[
    //свойства модели по которым допустима фильтрация
    'name' => '=:пирожок',  //1.тип операции сравнения формирования поискового запроса (до:)
                            //2. искомое(ый) значение(я)
    ...
    //для свойств допустима группировка на выходе запрос where (description ... AND amount ...)
    0 => [
        'description' => '~:Описание пирожка',
        'amount' => '!=:10'
    ],
    //связь с другими моделями
    'related' => [
        //имя связи
        'properties' =>
        [
            //свойства у связанной модели по которым допустима фильтрация
            'amount': '>
