次の(簡略化された)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;
?