Magento: Add relationship between order model and custom module model, with database constraint
I've created a module that has its own table faces
. Also, the module setup adds a face_id
attribute sales/order to connect them:
$installer = $this;
$installer->startSetup();
$installer->run("
CREATE TABLE `{$this->getTable('faces')}` (
`face_id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
PRIMARY KEY (`face_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
");
if (Mage::helper('faces')->isSalesFlat()) { // 1.4
// TBD
} else { // 1.3
$eav = new Mage_Eav_Model_Entity_Setup('sales_setup');
$eav->addAttribute('order', 'face_id', array('type' => 'int'));
}
$installer->endSetup();
This is working great in my 1.3.2.4 install. But there are aspects of the relationship between order
and face
that I'd like to have. Namely, I'd like to be able to do things like this:
$face = $order->getFace(); // This method doesn't exist right now
$faceTitle = $face->getTitle();
Also, I'd like 开发者_高级运维to add constraints. I would add them directly to the CREATE TABLE
SQL, but I'm wondering if they are automatically added if I use some sort of built in method for creating this relationship.
No, they are not added automatically. You could choose to store this information on the order table (by modifying it directly to add that column during setup) or you could create a table to join the two (order_face
basically). The advantage of the former is that it would allow you to pull the data into the order and at least get $order->getFaceId() automatically. With a quick change to the model you could load that face automatically.
Hope that helps!
Thanks, Joe
精彩评论