Laravel Nova 定義過濾器

2023-02-16 17:09 更新

Nova 的過濾器可以讓你定制你的 Nova 列表的查詢條件。例如,你也許想定義一個(gè)過濾器,用來快速找到 你應(yīng)用中的 "管理員" 用戶:


你可以通過 nova:filter Artisan 命令來生成一個(gè)過濾器,生成的過濾器默認(rèn)放在 app/Nova/Filters 文件夾下:

php artisan nova:filter UserType

每個(gè)在 Nova 中生成的過濾器都包含了 2 個(gè)方法 : apply 和 options.apply 方法負(fù)責(zé)按你希望的狀態(tài)修改查詢條件,而 options 方法用來定義過濾器中你要定義的過濾選項(xiàng)。舉個(gè)例子,UserType 過濾器內(nèi)容如下 :

<?php

namespace App\Nova\Filters;

use Illuminate\Http\Request;
use Laravel\Nova\Filters\Filter;

class UserType extends Filter
{
    /**
     * 申明這個(gè)過濾器的查詢條件.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Database\Eloquent\Builder  $query
     * @param  mixed  $value
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function apply(Request $request, $query, $value)
    {
        return $query->where('type', $value);
    }

    /**
     * 獲取過濾器的可選性.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function options(Request $request)
    {
        return [
            '管理員' => 'admin',
            '編輯' => 'editor',
        ];
    }
}

options 方法返回一個(gè)鍵值對(duì)數(shù)組。數(shù)組的鍵是展示給使用者選擇的文本。數(shù)組的值則會(huì)在選擇后作為 $value 參數(shù)傳入 apply 方法。在示例中,我們的過濾器定義了 2 個(gè)選項(xiàng) : admin 和 editor.

如示例所見,你可以利用這個(gè)方式傳入其他你希望的值到 apply 方法中以完成按條件過濾列表數(shù)據(jù). apply 方法應(yīng)該始終返回一個(gè)查詢實(shí)例


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)