Как отфильтровать список выбора в Laravel Nova, который использует поле BelongsTo? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть ресурс для викторины, который используется для определения вопросов и ответов в викторине.

Поле BelongsTo используется для выбора создателя этой викторины - оно извлекает эту информацию из моей таблицы пользователей. Однако я хочу получить только тех пользователей, у которых значение role_id равно 1 или 2.

Я пытаюсь использовать относительную функцию, но она, похоже, не хочет распознавать ее существование.

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:

class User extends Resource
{

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

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

Я пробовал использовать разные имена функций, включая: relatableUsers relatableusers relatableQuiz relatableQuizs relatableQuizzes

но каждый раз, когда нет эффекта.

Как мне отфильтровать этот список пользователей по идентификатору роли?

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Поскольку вы связываете Users с ресурса Quiz, пробовали ли вы наоборот?

class Quiz extends Resource
{
    // ...

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

0 голосов
/ 23 апреля 2020

Вы можете использовать whereIn метод в вашем запросе, как показано ниже:

$users = User::whereIn('role_id', [1,2])->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...