oooiik/laravel-query-filter

在Laravel中,将模型相关的查询过滤器写在一个单独的类中非常方便

1.1.3 2022-11-09 11:59 UTC

This package is auto-updated.

Last update: 2024-09-09 16:06:59 UTC


README

在Laravel中,将模型相关的查询过滤器写在一个单独的类中非常方便!

安装

composer require oooiik/laravel-query-filter

使用

单次使用

User::filter($validated)->get();

或创建一个过滤器

$userFilter = User::createFilter(UserFilter::class);

使用过滤器获取查询

$userFilter->apply($validated)->query();

在过滤器上编写过滤器并获取查询

$userFilter->apply($validated);
$userFilter->apply($validated_2)->query();

过滤器清理和重用

$userFilter->resetApply($validated_3)->query();

为了使用过滤器,您必须通过包提供的命令创建一个新的过滤器

php artisan make:filter UserFilter

此命令将在内部创建一个名为 Filters 的目录和一个名为 UserFilter 的类。要使用 User 模型的过滤器方法,请使用 Filterable 特性

<?php

namespace App\Models;

use Oooiik\LaravelQueryFilter\Traits\Model\Filterable;

class User extends Model
{
    use Filterable;

并通过添加以下内容设置模型的 defaultFilter

protected $defaultFilter = UserFilter::class;

您可以通过在 Filter 类中创建新的函数来创建自定义查询,例如按出版日期过滤书籍

public function username($username)
{
    $this->builder->where('username', $username);
}
// $validated = ['username' => 'name']

或按关系过滤

public function role($role)
{
    $this->builder->whereHas('role', function($query) use ($role) {
        $query->where('title', $role);
    })
}
// $validated = ['role' => 'admin']