socbaysky / laravel-model-filter-basic
易于使用的包,为Laravel提供模型过滤器轻松实现
dev-master
2022-02-16 02:49 UTC
This package is not auto-updated.
Last update: 2024-09-25 18:15:19 UTC
README
$ composer require socbaysky/laravel-model-filter-basic
用法
为您的模型创建新的过滤器示例
$ php artisan make:filter 'Models\User'
或者
$ php artisan make:filter 'Models\AnyYourModel'
运行以上命令后,Laravel将自动生成
- app/Filters/QueryFilter.php (仅首次运行上述命令)
- app/Traits/Filterable.php (仅首次运行上述命令)
- app/Filters/UserFilter.php (确保此文件不存在) 或
- app/Filters/AnyYourModelFilter.php (确保此文件不存在)
示例 UserFilter 类,我们将这样使用它
public function index(Request $request) { $user = User::query() ->name($request) ->email($request); return $user->get(); }
您可以根据自己的需求自定义 app/Filters/UserFilter.php 或 app/Filters/AnyYourModelFilter.php。
默认情况下,生成的过滤器具有数据库表中列的方法,例如 UserFilter
<?php namespace App\Filters; class UserFilter extends QueryFilter { protected $filterable = [ 'id', 'name', 'email', 'email_verified_at', 'password', 'remember_token', 'created_at', 'updated_at' ]; public function filterId($id) { return $this->builder->where('id', 'like', '%' . $id . '%'); } public function filterName($name) { return $this->builder->where('name', 'like', '%' . $name . '%'); } public function filterEmail($email) { return $this->builder->where('email', 'like', '%' . $email . '%'); } public function filterEmailVerifiedAt($email_verified_at) { return $this->builder->where('email_verified_at', 'like', '%' . $email_verified_at . '%'); } public function filterPassword($password) { return $this->builder->where('password', 'like', '%' . $password . '%'); } public function filterRememberToken($remember_token) { return $this->builder->where('remember_token', 'like', '%' . $remember_token . '%'); } public function filterCreatedAt($created_at) { return $this->builder->where('created_at', 'like', '%' . $created_at . '%'); } public function filterUpdatedAt($updated_at) { return $this->builder->where('updated_at', 'like', '%' . $updated_at . '%'); } }
您可以看到 protected $filterable,这是可以过滤的数据库表中列的数组,您可以编辑此内容
并且使用带有 filter 前缀的方法,您可以自定义返回语句以符合Laravel Eloquent,默认我们使用 "like" 查询。