首页 文章

Laravel nova属于过滤器

提问于
浏览
0

我有一个桌冠和一个桌用户 . 我也有相同的模型(冠军和用户) .

在一个冠军赛中可能是一名主裁判,主裁和法官 . 它们都是我的应用程序中的角色并存储在角色表中 .

我用3个belongsTo字段创建了一个新的资源锦标赛 . 所有这些都可以搜索到 .

BelongsTo::make('Main judge', 'mainJudge', User::class)
            ->onFormsAndDetail()
            ->searchable(),

        BelongsTo::make('Main secreatary', 'mainSecretary', User::class)
            ->onFormsAndDetail()
            ->searchable(),


        BelongsTo::make('Judge operator', 'judgeOperator', User::class)
            ->onFormsAndDetail()
            ->searchable(),

在搜索过程中,我需要过滤查询以便搜索只给予具有相同角色的用户 .

例如,在搜索主要判断期间,我必须将下一个过滤器包含在查询中

select *
from users u
join users_roles ur on u.id = ur.user_id
join roles r on ur.role_id = r.id
where r.alias = 'judge'

我已经在app / Nova / Resource.php中找到了一些方法,例如relatableQuery,但是如果我有3个用户字段,如何在用户资源中使用它 .

1 回答

  • 0

    在锦标赛资源上,您必须创建具有关系名称的函数 .

    例如

    public static function relatableMainSecretary(NovaRequest $request, $query)
    {
        return $query->where(...);
    }
    

相关问题