次のような有価証券の表があります。
CREATE TABLE IF NOT EXISTS `securities` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ticker` varchar(36) NOT NULL,
`name` varchar(180) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ticker` (`ticker`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=585 ;
つまり、主キーはid
別の一意のインデックスがありますticker
。
インデックスは、ticker
これを持つ他のテーブル、secuity_prices を参照します
CREATE TABLE IF NOT EXISTS `security_prices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`price_date` date NOT NULL,
`ticker` varchar(36) NOT NULL,
`price` decimal(10,6) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=88340 ;
security hasMany securityPrice [securityPrice belongsTo security] のように、それらの間の hasMany 関係を定義したいと考えています。
私が抱えている問題は、Cake がフィールドの代わりに主キーを使用してテーブルにsecurity
リンクしていることです。ティッカーを介して結合を行うにはどうすればよいですか?security_prices
ticker
ここに私の関係があります:
//Security
public $hasMany = array(
'SecurityPrice' => array(
'className' => 'SecurityPrice',
'foreignKey' => 'ticker',
)
);
//SecurityPrice
public $belongsTo = array(
'Security' =>
array(
'className' => 'Security',
'foreignKey' => 'ticker',
)
);