Когда вы определяете функцию в подклассе, например "setTableDefinition" в TableB, она не вызывает родительскую функцию. Вам необходимо явно вызвать parent :: setTableDefinition () в функции tableB setTableDefinition, а также parent :: setup () в функции настройки tableB.
//B
class tableB extends tableA{
public function setTableDefinition() {
parent::setTableDefinition();
$this->hasColumn('tableB_id', 'integer', null, array(
'primary' => true, 'autoincrement' => true));
$this->hasColumn('tableA_id','integer');
}
function setup() {
parent::setup();
$this->setTableName("tableB");
}
}
Теперь, похоже, что tableA и tableB на самом деле разные таблицы с разными столбцами, и приведенный выше код сломается, потому что он сообщит tableB, что у него есть столбец tableA_id. Поэтому вам придется перемещать код в зависимости от того, какие таблицы имеют какие столбцы. Вы можете просто скопировать его вызов hasOne в функцию tableTabledefinition tableB.
Следует помнить, что это всего лишь код PHP, устанавливающий объекты, и наследование этих классов работает так же, как и другие классы PHP. Поэтому внесите в родительский класс то, что является общим, и то, что отличается от детей.