Модель ресурса Magento для таблицы с составным первичным ключом

Я создаю пользовательский модуль для сайта электронной коммерции Magento, и модуль будет центрировать вокруг нового (т.е., пользовательский) таблицу, которая имеет составной/составной первичный ключ, или скорее таблица имеет два столбца, которые составляют первичный ключ. Кто-либо знает, как создать Ваши модели моделей/ресурса на основе таблицы с первичным ключом?

Для предоставления еще нескольких подробной информации я искал несколько учебных руководств и также использовал превосходный moduleCreator сценарий. Но кажется, что все учебные руководства вращаются вокруг таблицы, имеющей PK со всего одним столбцом в нем. Что-то вроде этого:

class __Model_Mysql4_ extends Mage_Core_Model_Mysql4_Abstract {
   public function _construct(){
        $this->_init('/', '');
   }
} 

Кроме того, я просто заметил, что, смотря на модель базы данных почти все таблицы имеют единственный первичный ключ. Я понимаю, что это имеет непосредственное отношение к структуре дб EAV-стиля, но все еще действительно ли возможно использовать таблицу с составным PK? Я хочу придерживаться платформы/конвенций Magento, если это возможно. Этому препятствуют? Я должен просто изменить структуру своей пользовательской таблицы, чтобы иметь некоторый фиктивный идентификационный столбец? У меня действительно есть способность сделать это, но geez!

(Другое примечание стороны, что я думал, что упомяну, - то, что похоже, что Платформа Зенда позволяет основывать класс на таблице с составным первичным ключом (см. Пример № 20 на этой странице - о промежуточном вниз), таким образом, кажется, что платформа Magento должна также предусмотреть его... Я просто не вижу как.)

17
задан Alan Storm 9 June 2010 в 20:13
поделиться

1 ответ

Как и большинство моделей, вдохновленных Active Record, Magento Mage_Core_Model_Abstract не создавалась с учетом поддержки составных первичных ключей. Любые модели, наследующие от этой базы (то есть все они), наследуют это предположение. Если вы хотите использовать составные первичные ключи, у вас не получится. Ваш выбор - пойти по маршруту модели Magento и создать единственный первичный ключ («фальшивый», как вы его назвали), а затем применить уникальный индекс к таблице, ИЛИ реализовать собственный слой модели, используя базовую таблицу Zend DB, ИЛИ импортировать стороннее модельное решение в систему, которое поддерживает нужные вам функции.

Что касается Zend Framework, команда Magento использовала Zend Table Gateway Pattern для реализации уровня модели стиля Active Record для своей платформы. Zend Framework - это не стек приложений, как Cake или Rails, это набор библиотек классов, которые можно использовать для создания стеков приложений (или приложений, или многих других вещей). То, что что-то поддерживается в классах Zend Framework, не означает, что системы и приложения, использующие Zend Framework, получают это бесплатно.

29
ответ дан 30 November 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: