Class::DBIで3テーブル検索(前提変更編)
テーブル構成に問題があるので、テーブル構成を変更する。
order_itemテーブルを以下のように変更。
create table order_item (
no int(10) NOT NULL,
no_sub int(10) NOT NULL,
item_no int(8) NOT NULL,
PRIMARY KEY(no,no_sub)
);
+---------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| no | int(10) | | PRI | 0 | |
| no_sub | int(10) | | PRI | 0 | |
| item_no | int(8) | | | 0 | |
+---------+---------+------+-----+---------+-------+
+----+--------+---------+
| no | no_sub | item_no |
+----+--------+---------+
| 1 | 1 | 100 |
| 1 | 2 | 101 |
| 2 | 1 | 100 |
| 3 | 1 | 101 |
+----+--------+---------+
insert into order_item values (1,1,100);
insert into order_item values (1,2,101);
insert into order_item values (2,1,100);
insert into order_item values (3,1,101);
マッピングモジュールも変更
package Neko::OrderItem;
use strict;
use warnings;
use base 'Neko::DBI';
__PACKAGE__->table('order_item');
__PACKAGE__->columns( Primary => qw[ no no_sub ]);
__PACKAGE__->columns( Essential => qw[ item_no ] );
Neko::OrderItem->has_a( item_no => 'Neko::Item' );
1;
多分これでよいと思うが。。。