Magento:使用数据库约束在订单模型和自定义模块模型之间添加关系

时间:2010-12-18 22:05:21

标签: php object magento entity-relationship

我创建了一个拥有自己的表faces的模块。此外,模块设置会添加face_id属性销售/订单以连接它们:

$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();

这在我的1.3.2.4安装中运行良好。但是我希望orderface之间存在关系。也就是说,我希望能够做到这样的事情:

$face = $order->getFace(); // This method doesn't exist right now
$faceTitle = $face->getTitle();

另外,我想添加约束。我会将它们直接添加到CREATE TABLE SQL中,但我想知道如果我使用某种内置方法来创建这种关系,它们是否会被自动添加。

1 个答案:

答案 0 :(得分:1)

不,它们不会自动添加。您可以选择将此信息存储在订单表中(通过直接修改它以在设置期间添加该列),或者您可以创建一个表来加入这两个(基本上为order_face)。前者的优点是它允许您将数据拉入订单并至少自动获得$ order-> getFaceId()。通过快速更改模型,您可以自动加载该面。

希望有所帮助!

谢谢, 乔