Слишком мало аргументов Laravel Nova relatable запрос с полями

#php #laravel #laravel-nova

#php #laravel #laravel-nova

Вопрос:

У меня есть отношение, которое нужно фильтровать по-разному в зависимости от поля Laravel Nova, для заполнения которого оно используется.

 A single Locations has one or more Locations attached as options 
(BelongsToMany)
A single Process_type also has a single Locations set as a default 
(BelongsTo)
 

Я использую соответствующий запрос для фильтрации доступных параметров для каждого из этих двух полей.

Поле в моем ресурсе местоположения выглядит следующим образом:

 BelongsToMany::make('Neighborhood Locations', 'relatedLocations', Location::class)
                ->searchable()
 

Соответствующий запрос выглядит следующим образом:

 public static function relatableLocations(NovaRequest $request, $query, Field $field)
{
    if ($field instanceof BelongsToMany) {
        return $query->where('location_type_id', '=',8);
    }
    return $query;
}
 

Этот шаблон взят из документации Laravel Nova по динамическим моделям с привязкой (https://nova.laravel.com/docs/3.0/resources/authorization.html#dynamic-relatable-methods ).
Он описывает добавление поля в качестве третьего параметра к соответствующему запросу, а затем его использование в условном для выбора логики фильтра.

Ошибка, которую я получаю, заключается в следующем:

 Too few arguments to function AppNovaProcess_type::relatableLocations(), 
2 passed and exactly 3 expected
 

Мои make() вызовы имеют три параметра в соответствии с документацией, есть идеи, чего мне не хватает?

Я работаю на Laravel 7.x и Nova 3.x

Источник: Laravel

Комментарии:

1. Попробуйте сообщить в Github о проблемах Laravel Nova

Ответ №1:

В relatableLocations не должно быть 4-го аргумента. Итак, удалите Field $field из функции.

Проверьте соответствующую фильтрацию из документации Nova для получения дополнительной информации:

Соответствующая фильтрация