#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 для получения дополнительной информации: