【发布时间】:2020-07-22 10:15:34
【问题描述】:
我有某些类型的元素。 我有某些类型的垃圾箱。 一个元素只属于同一类型的bin。
数据库中的一个表包含元素。 另一个表包含垃圾箱。 它们每个都有一个“type_id”。
就元素而言,有几个模型,除了抽象基础模型之外,每个模型都设置了 ->addCondition('type', '=', 'x')。
现在在实例化 X 类型元素的 CRUD 时,在添加或编辑项目时,如何防止 Y 类型的 bin 显示在下拉列表中?
本质上,我想对 hasOne() 施加一个附加条件,以限制显示的外部值。
class AbstractElement extends \atk4\data\Model {
public $table = 'element';
public $id_field = 'element_id';
public $title_field = 'element_data';
function init() {
parent::init();
$this->hasOne('Bin', [Bin::class, 'our_field'=>'element_bin_id', 'caption'=>'Bin', 'required'=>true])->addTitle(['caption'=>'Bin']);
$this->addField('element_data', ['required'=>true]);
$this->hasOne('Type', [Type::class, 'our_field'=>'type_id']);
}
}
class Element extends AbstractElement {
function init() {
parent::init();
$this->addCondition('type_id', '=', '1');
}
}
class Bin extends \atk4\data\Model {
public $table = 'bin';
public $id_field = 'bin_id';
public $title_field = 'bin_name';
function init() {
parent::init();
$this->addField('bin_name', ['caption'=>'Name']);
$this->hasOne('Type', [Type::class, 'our_field'=>'bin_type_id']);
}
}
class Type extends \atk4\data\Model {
public $table = 'type';
public $id_field = 'type_id';
public $title_field = 'type_name';
function init() {
parent::init();
$this->addField('type_name');
}
}
【问题讨论】:
标签: atk4