Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5 拉维尔新星贝朗斯托过滤器_Laravel 5_Eloquent_Laravel Nova - Fatal编程技术网

Laravel 5 拉维尔新星贝朗斯托过滤器

Laravel 5 拉维尔新星贝朗斯托过滤器,laravel-5,eloquent,laravel-nova,Laravel 5,Eloquent,Laravel Nova,我有一个表冠军和一个表用户。我也有相同的型号(冠军和用户) 在一次锦标赛中,可能有一名主裁判、主秘书和主裁判操作员。它们都是我的应用程序中的角色,存储在roles表中 我创建了一个新的资源锦标赛,有3个领域。所有这些都是可搜索的 BelongsTo::make('Main judge', 'mainJudge', User::class) ->onFormsAndDetail() ->searchable(),

我有一个表冠军和一个表用户。我也有相同的型号(冠军和用户)

在一次锦标赛中,可能有一名主裁判、主秘书和主裁判操作员。它们都是我的应用程序中的角色,存储在roles表中

我创建了一个新的资源锦标赛,有3个领域。所有这些都是可搜索的

        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个User字段,我如何在User Resource中使用它。

在championresource上,您必须创建带有关系名称的函数

e、 g

实现这一点的最简单(非官方)方法是嗅探请求URL的结构。记住这一点,您可以简单地重写
Nova/User
类中的
relatableQuery
方法

这就是它的实现方法,请记住,
strtolower
功能是可选的,只会为区分大小写的打字省去不必要的麻烦

公共静态函数relatableQuery(NovaRequest$request$query)
{
$requestSegment=strtolower($request->segment(4));
如果($requestSegment=='mainjudge'){
返回$query->where(…);
}
如果($requestSegment=='main secretary'){
返回$query->where(…);
}
如果($requestSegment=='judgeoperator'){
返回$query->where(…);
}
返回$query;
}

您确定我必须在championship resource上创建相关方法吗?因为AssociateTableQueryMethod搜索用户模型上的relatable方法
public static function relatableMainSecretary(NovaRequest $request, $query)
{
    return $query->where(...);
}