samavidev/model-filtration

使用查询字符串过滤所需的模型记录

1.1.0 2023-02-06 17:01 UTC

This package is auto-updated.

Last update: 2024-09-06 21:44:31 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此包提供了一个注解,用于使用查询字符串检索特定模型的记录。以下是一个快速示例:

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use SamaviDev\ModelFiltration\Attributes\Filter;

#[Filter(['name' => 'username'])]
class User extends Authenticatable
{
    ...
}

安装

您可以通过composer安装此包。

composer require samavidev/model-filtration

用法

  • 第一个参数是可以在查询字符串中使用的有效字段,可以是字符串或数组的形式,您还可以使用关联数组将查询分配给特定模型。
  • 第二个参数是应用于表字段的操作符(andorlikelike:or)。您甚至可以使用with来处理关系。默认值是and

例如

#[Filter(['name' => 'username', 'email' => 'useremail'], 'or')]

它也可以多次使用。

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use SamaviDev\ModelFiltration\Attributes\Filter;

#[Filter('id')]
#[Filter(['name' => 'username'])]
class User extends Authenticatable
{
    ...
}
过滤组定义

您还可以定义一个Attribute类,用作模型的一组过滤器。为此,您必须实现Group接口。

namespace App\Attributes;

use Attribute;
use SamaviDev\ModelFiltration\Contracts\Group;

#[Attribute]
class UsersFilter implements Group
{
    public function props(): array
    {
        return [
            'or' => ['attribute', ...]
            'and' => ['attribute' => 'alias', ...],
            ...
        ];
    }
}

最后,您可以在模型中使用它,如下所示:

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Attributes\UsersFilter;

#[UsersFilter]
class User extends Authenticatable
{
    ...
}

变更日志

请参阅变更日志获取最近更改的更多信息。

贡献

请参阅贡献指南获取详细信息。

安全漏洞

请参阅我们的安全策略了解如何报告安全漏洞。

鸣谢

许可

MIT许可(MIT)。请参阅许可文件获取更多信息。