开发者

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜