У меня есть элементы определенных типов. У меня есть контейнеры определенных типов. Элемент принадлежит только к бинам того же типа.
Одна таблица в БД содержит элементы. Другая таблица содержит мусорные ведра. Каждый из них имеет "type_id".
Что касается элементов, есть несколько моделей, каждая из которых устанавливает -> addCondition ('type', '=', 'x') в дополнение к абстрактная базовая модель.
Теперь при создании экземпляра CRUD элемента типа X, при добавлении или редактировании элементов, как предотвратить отображение корзин типа Y в раскрывающихся списках?
In Суть Я хотел бы наложить дополнительное условие на 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');
}
}