Magento: добавить связь между моделью заказа и пользовательской моделью модуля с ограничением базы данных - PullRequest
1 голос
/ 19 декабря 2010

Я создал модуль с собственной таблицей faces.Кроме того, в настройках модуля добавлен атрибут face_id sales / order для их подключения:

$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.Но есть аспекты отношений между order и face, которые я бы хотел иметь.А именно, я хотел бы иметь возможность делать такие вещи:

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

Кроме того, я хотел бы добавить ограничения.Я бы добавил их непосредственно в CREATE TABLE SQL, но мне интересно, добавляются ли они автоматически, если я использую какой-то встроенный метод для создания этих отношений.

1 Ответ

1 голос
/ 19 декабря 2010

Нет, они не добавляются автоматически. Вы можете сохранить эту информацию в таблице заказов (изменив ее непосредственно, чтобы добавить этот столбец во время установки), или вы можете создать таблицу для объединения этих двух (order_face в основном). Преимущество первого состоит в том, что он позволит вам привести данные в порядок и, по крайней мере, автоматически получить $ order-> getFaceId (). С помощью быстрой смены модели вы можете загрузить это лицо автоматически.

Надеюсь, это поможет!

Спасибо, Джо

...