【发布时间】:2011-01-20 03:35:11
【问题描述】:
技术:ORM、Doctrine 1.1.6、KohanaPHP
使用 Doctrine 1.1.6。如何将模型分布到不同的表中?
详细情况:
我有一个实体类,它包含一个 ID、登录名和密码,并且有一个电子邮件地址、多个地址和一些其他关系。我还有另外两个类,Company 和 Person,它们扩展了 Entity。我想使用Column aggregation 扩展它们,因此所有登录名和密码信息都保存在一个地方。现在我想将特定列添加到我的 Person 类(名字、姓氏等),但我找不到如何做到这一点。文档给出的唯一示例是没有额外列的示例。
当前课程
实体类:
类实体扩展了 Doctrine_Record
{
公共函数 setTableDefinition() {
$this->setTableName('entity');
$this->hasColumn('id', 'integer', 4, array(
'类型' => '整数',
'长度' => 4,
'无符号' => 0,
'主要' => 真,
'自动增量' => 真,
));
$this->hasColumn('login', 'string', 64, array(
'类型' => '字符串',
'长度' => 64,
'固定' => 假,
'主要' => 假,
'notnull' => 真,
'自动增量' => 假,
));
$this->hasColumn('密码', '字符串', 64, 数组(
'类型' => '字符串',
'长度' => 64,
'固定' => 假,
'主要' => 假,
'notnull' => 真,
'自动增量' => 假,
));
$this->hasColumn('created', 'date', null, array(
'类型' => '日期',
'主要' => 假,
'notnull' => 假,
'自动增量' => 假,
));
$this->hasColumn('modified', 'date', null, array(
'类型' => '日期',
'主要' => 假,
'notnull' => 假,
'自动增量' => 假,
));
$this->setSubclasses(数组(
'人' => 数组(“类型” => 1)
));
}
}
人物类:
类人扩展实体
{
公共函数 setTableDefinition() {
$this->setTableName('person');
$this->hasColumn('id', 'integer', 4, array(
'类型' => '整数',
'长度' => 4,
'无符号' => 0,
'主要' => 真,
'自动增量' => 真,
));
$this->hasColumn('firstname', 'string', 255, array(
'类型' => '字符串',
'长度' => 255,
'固定' => 假,
'主要' => 假,
'notnull' => 真,
'自动增量' => 假,
));
$this->hasColumn('insertion', 'string', 64, array(
'类型' => '字符串',
'长度' => 64,
'固定' => 假,
'主要' => 假,
'notnull' => 假,
'自动增量' => 假,
));
$this->hasColumn('lastname', 'string', 255, array(
'类型' => '字符串',
'长度' => 255,
'固定' => 假,
'主要' => 假,
'notnull' => 真,
'自动增量' => 假,
));
}
}
生成的 SQL:
创建表`person` (
`id` INT AUTO_INCREMENT,
`firstname` VARCHAR(255) NOT NULL,
`插入` VARCHAR(64),
`lastname` VARCHAR(255) NOT NULL,
主键(`id`)
) 引擎 = INNODB
创建表`实体`(`
id` INT AUTO_INCREMENT,
`login` VARCHAR(64) NOT NULL,
`password` VARCHAR(64) NOT NULL,
`创建`日期,
`修改`日期,
主键(`id`)
) ENGINE = INNODB
谁能告诉我如何做到这一点?
【问题讨论】:
标签: orm doctrine models multiple-tables