jeudi 23 avril 2020

How do I filter a select list in Laravel Nova that uses a BelongsTo field?

I have a Quiz Resource that is used to define the questions and answers in a quiz.

A BelongsTo field is used to select the creator of that quiz - it pulls this information out of my users table. However, I only want to pull users that have the 'role_id' of 1 or 2.

I am trying to use the relatable function but it does't seem to want to recognise its existence.

My Quiz Resource:

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;
                }),

            ...
        ];
    }
}

My Nova Users model:

class User extends Resource
{

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

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

I have tried using different function names including: relatableUsers relatableusers relatableQuiz relatableQuizs relatableQuizzes

but each time there is no effect.

How can I filter this list of users by role id?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire