у дочерних классов, как показано ниже:
// models/TextItem.php
class TextItem extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('topic', 'string', 100);
}
}
Теперь давайте создадим модель Comment, расширяющую TextItem, и добавим новый столбец content:
// models/Comment.php
class Comment extends TextItem
{
public function setTableDefinition()
{
parent::setTableDefinition();
$this->hasColumn('content', 'string', 300);
}
}
Теперь в формате YAML:
---
# schema.yml
# ...
TextItem:
columns:
topic: string(100)
Comment:
inheritance:
extends: TextItem
type: concrete
columns:
content: string(300)
Если посмотреть SQL ...
// test.php
// ...
$sql = Doctrine_Core::generateSqlFromArray(array('TextItem', 'Comment'));
echo $sql[0] . "\n";
echo $sql[1];
CREATE TABLE text_item (id BIGINT AUTO_INCREMENT,
topic VARCHAR(100),
PRIMARY KEY(id)) ENGINE = INNODB
CREATE TABLE comment (id BIGINT AUTO_INCREMENT,
topic VARCHAR(100),
content TEXT,
PRIMARY KEY(id)) ENGINE = INNODB
Вам совсем не обязательно создавать новые столбцы у дочерних классов, в случае, если вы просто хотите хранить данные в разных таблицах.
Комментариев нет:
Отправить комментарий