如何在 Laravel Nova 中过滤使用 BelongsTo 字段的选择列表?

RDo*_*wns 2 laravel eloquent laravel-5 laravel-nova

我有一个测验资源,用于定义测验中的问题和答案。

BelongsTo 字段用于选择该测验的创建者 - 它将这些信息从我的用户表中提取出来。但是,我只想提取“role_id”为 1 或 2 的用户。

我正在尝试使用相关功能,但它似乎不想承认它的存在。

我的测验资源:

class Quiz extends Resource
{
    /**
     * The model the resource corresponds to.
     *
     * @var string
     */
    public static $model = 'App\Quiz\Quiz';

public function fields(Request $request)
    {

        return [
            ...

            BelongsTo::make('User', 'users','\App\Nova\User')
                ->display(function($user){
                        return $user->first_name . ' ' . $user->last_name;
                }),

            ...
        ];
    }
}
Run Code Online (Sandbox Code Playgroud)

我的 Nova 用户模型:

class User extends Resource
{

     public static $model = 'App\Account\User';

public static function relatableQuizzes(NovaRequest $request, $query)
    {
        return $query->where('role_id', 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用不同的函数名称,包括: relatableUsers relatableusers relatableQuiz relatableQuizs relatableQuizzes

但每次都没有效果。

如何按角色 ID 过滤此用户列表?

Vol*_*ose 6

Users当您从资源中获取相关信息时Quiz,您是否尝试过相反的方法?

class Quiz extends Resource
{
    // ...

    public static function relatableUsers(NovaRequest $request, $query)
    {
        return $query->where('role_id', 1);
    }
}

Run Code Online (Sandbox Code Playgroud)