samavidev / model-filtration
使用查询字符串过滤所需的模型记录
1.1.0
2023-02-06 17:01 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^9.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-06 21:44:31 UTC
README
此包提供了一个注解,用于使用查询字符串检索特定模型的记录。以下是一个快速示例:
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
用法
- 第一个参数是可以在查询字符串中使用的有效字段,可以是字符串或数组的形式,您还可以使用关联数组将查询分配给特定模型。
- 第二个参数是应用于表字段的操作符(
and、or、like、like: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)。请参阅许可文件获取更多信息。