naumov-adata/pipeline-filter

在模型中使用管道数据过滤模式的库

v1.1.0 2024-09-05 10:24 UTC

This package is auto-updated.

Last update: 2024-09-05 10:24:51 UTC


README

在模型中使用管道数据过滤模式的库。

安装

要安装此库,请执行以下命令

composer require naumov-adata/pipeline-filter

使用

安装库后,您可以在自己的模型中使用它。以下是一个示例

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use PipelineFilter\Core\Traits\HasPipelineFilter;

final class YourModel extends Model
{
    use HasPipelineFilter;

    // Другие методы и свойства модели
}

过滤器示例

<?php

declare(strict_types=1);

namespace PipelineFilter\Core\Filters\Pipelines;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use PipelineFilter\Core\Filters\FilterPipelineInterface;

/**
 * Class ExampleFilter
 */
class ExampleFilter implements FilterPipelineInterface
{
    /**
     * @param Builder $builder
     * @param mixed $dto
     *
     * @return Builder
     */
    public static function apply(Builder $builder, mixed $dto): Builder
    {
        /** @var Model|Builder $builder */
        return true
            ? $builder->where('name', $dto->name)
            : $builder;
    }
}

使用过滤器的示例

$dto = new YourDataTransferObject(); // Создайте ваш DTO

$results = YourModel::pipelineFilter([
    AccessFilter::class,
    WithCompaniesFilter::class,
    FavoriteAccessFilter::class,
], $dto)->get();

依赖

此库需要以下依赖项

  • PHP版本 ^8.0

许可证

此库没有许可证。