使用以下(简化的)MySQL 表定义:
create table items (
item_id int unsigned auto_increment primary key,
purchase_date date
) engine = innodb;
create table computers (
item_id int unsigned primary key,
processor_type varchar(50),
foreign key item_fk (item_id) references items (item_id)
on update restrict on delete cascade
) engine = innodb;
create table printers (
item_id int unsigned primary key,
is_duplex boolean,
foreign key item_fk (item_id) references items (item_id)
on update restrict on delete cascade
) engine = innodb;
作为DBIx::Class的新手,我想为数据库实体(计算机和打印机都是项目)之间的继承关系建模,但是使用提供的 belongs_to 关系类型,这似乎很尴尬,因为与基类的关联是没有隐藏,所以仍然必须为这两个类手动创建实体,并且在派生类中访问基类属性与访问它们自己的属性是不同的。
是否有一个优雅的解决方案可以让我说:
$printer = $printer_rs->create({purchase_date => $date, is_duplex => 0});
或(在获取的打印机行上):
$date = $printer->purchase_date;
$duplex = $printer->is_duplex;
?