Я застрял с этой проблемой, и я не могу понять, как решить после некоторого времени поиска примера.
Два варианта раскрывающихся списков зависят от их значений.
У меня есть одна таблица со значениями ‘area’ (вложенная в простое дерево, работающее нормально) со следующей структурой в файле fields.yaml:
fields:
id:
label: Número
oc.commentPosition: ''
span: auto
disabled: 1
type: number
area_id:
label: 'Parente de'
oc.commentPosition: ''
emptyOption: 'Sem valor'
span: auto
type: dropdown
area:
label: Área
oc.commentPosition: ''
span: full
required: 1
type: text
У меня также есть другая таблица ‘modulos’ значения со следующей структурой в fields.yaml:
fields:
modulo:
label: Módulo
oc.commentPosition: ''
span: auto
required: 1
type: text
area:
label: Área
oc.commentPosition: ''
nameFrom: area
emptyOption: 'Sem valor'
span: auto
descriptionFrom: id
type: relation
В модели «Площадь» у меня есть:
...
public $hasMany = [
'modulos' => ['JML\Gkb\Models\Modulos']
];
В модели «Modulos» у меня есть
....
public $belongsTo = [
'area' => ['\JML\Gkb\Models\Area']
];
У меня есть другая модель, которая имеет отношения с предыдущими полями и два раскрывающихся поля работают нормально без какого-либо фильтра, и поле устранения неполадок (по модулю), где я не могу найти способ фильтрации на основе значений раскрывающегося списка «Площадь», у меня есть следующее в fields.yaml.
....
modulo_id:
label: mod
oc.commentPosition: ''
emptyOption: 'Sem valor'
span: auto
required: 1
dependsOn:
area
type: dropdown
tab: Geral
В моем PHP-файле моделей, в котором определены выпадающие списки, я имею:
public function getModuloIdOptions() {
return Modulos::where('area_id', '=', $this->area)->lists('modulo', 'id');
}
Это мне кажется логичным (возможно, нет), и я попытался с БД также и многие другие. Я пробовал с dd()
чтобы увидеть, смогу ли я получить значения из первого выпадающего меню безрезультатно. Если я пытаюсь отфильтровать значения, никакое значение не появляется вообще (кроме пустого значения).
Любая помощь там ???
ТИА
JL
Набор данных передается как второй аргумент для получения метода «getOptions». Вот альтернативный подход, который может работать:
public function getModuloIdOptions($value, $data) {
return Modulos::where('area_id', '=', array_get($data, 'area'))->lists('modulo', 'id');
}
Вы также можете попробовать получить доступ к area_id
значение:
public function getModuloIdOptions(){
return Modulos::where('area_id', '=', $this->area_id)->lists('modulo', 'id');
}
Или менее эффективно area->id
значение (может потребоваться обработка исключений):
public function getModuloIdOptions(){
return Modulos::where('area_id', '=', $this->area->id)->lists('modulo', 'id');
}
Я решил проблему с этим выпадающим и другими задачами с помощью следующих шагов:
Это решило мою проблему.
Спасибо всем.