Magento - возможно ли иметь несколько таблиц для одной модели? - PullRequest
5 голосов
/ 03 декабря 2010

пытается настроить файл конфигурации для пользовательского модуля - нужно ли иметь уникальную модель для каждого 'resourceModel' или возможно иметь несколько сущностей таблицы на модель?

Можно ли заставить что-то подобное работать:


    <config>...
 <model>
  <namespace>
    <class>Namespace_Module_Model</class>
    <resourceModel>module_mysq4</resourceModel>
  </namespace>
  <module_mysql4>
   <class>Namespace_Module_Model_Mysql4</class>
    <entities>
        <table_1>
            <table>table_1</table>
        </table_1>
        <table_2>
            <table>table_2</table>
        </table_2>
        <table_3>
            <table>table_3</table>
        </table_3>
        ...
    </entities>
   </module_mysql4>
..</config>

и затем динамически переключаться между таблицами в модели?

и связанные: Кто-нибудь знает, каковы возможные дети и их свойства?Я видел «сущности», «ассоциации» и «предметы» - thx

Ответы [ 3 ]

3 голосов
/ 03 декабря 2010

Не совсем понятно, о чем вы здесь спрашиваете. Magento имеет базовый один ресурс до один стол ресурс и один ресурс до множество таблиц, построенных определенным образом ресурс для EAV модели стиля.

Сценарий, который вы описываете выше, напрямую не поддерживается системой, но если вы хотите реализовать что-то подобное, ничто не помешает вам реализовать ресурс, который работает так, как вы хотите.

Что касается возможных дочерних элементов, создайте простое средство просмотра конфигурации , описанное здесь , чтобы получить дамп всей объединенной конфигурации, а затем используйте средство просмотра xpath для проверки всех узлов (и их дочерних элементов), которые вы Вы заинтересованы в

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

Спасибо за ответ и извинения, если вопрос был неясным.После нескольких часов отладки он работает со следующей структурой:


<models>
  <modulename>
   <class>Namespace_Modulename_Model</class>
   <resourceModel>modulename_mysql4</resourceModel>
  </modulename>
  <modulename_type1>
   <class>Namespace_Modulename_Model_Type1</class>
   <resourceModel>modulename_mysql4</resourceModel>
  </modulename_type1>
   <modulename_type2>
   <class>Namespace_Modulename_Model_Type2</class>
   <resourceModel>modulename_mysql4</resourceModel>
  </modulename_type2>
  <modulename_mysql4>
   <class>Namespace_Modulename_Model_Mysql4</class>
   <entities>
    <modulename>
     <table>modulename</table>
    </modulename>
     <modulename_type1>
     <table>modulename_type1</table>
    </modulename_type1>
     <modulename__type2>
     <table>modulename_type2</table>
    </modulename_type2>
   </entities>
  </modulename_mysql4>

 </models>

Так что да - для каждой объявленной модели существует единая табличная сущность (одна модель, один ресурс), но я бы предположилчто для каждой дополнительной комбинации модель / resourceModel потребуется собственный отдельный класс Model_Mysql в своем собственном узле modulename_mysql4, ala:


<models>
 <modulename>
  <class>Namespace_Modulename_Model</class>
  <resourceModel>modulename_mysql4</resourceModel>
 </modulename>
 <modulename_type1>
  <class>Namespace_Modulename_Model_Type1</class>
  <resourceModel>modulename_mysql4_type1</resourceModel>
 </modulename_type1>
  <modulename_type2>
  <class>Namespace_Modulename_Model_Type2</class>
  <resourceModel>modulename_mysql4_type2</resourceModel>
 </modulename_type2>
 <modulename_mysql4>
  <class>Namespace_Modulename_Model_Mysql4</class>
  <entities>
   <modulename>
    <table>modulename</table>
   </modulename>
  </entities>
 </modulename_mysql4>
 <modulename_mysql4_type1>
  <class>Namespace_Modulename_Model_Mysql4_Type1</class>
  <entities>
    <modulename_type1>
    <table>modulename_type1</table>
   </modulename_type1>
  </entities>
 </modulename_mysql4_type1>
 <modulename_mysql4_type2>
  <class>Namespace_Modulename_Model_Mysql_Type2</class>
  <entities>
    <modulename_type2>
    <table>modulename_type2</table>
   </modulename_type2>
  </entities>
 </modulename_mysql4_type2>
</models>

, но это не так.Хотелось бы услышать игру объяснения игры.Спасибо за помощь!

0 голосов
/ 11 февраля 2012

Или:

    <resources>
        <modulename_setup>
            <setup>
                <module>modulename</module>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </modulename_setup>
        <modulename_write>
            <connection>
                <use>core_write</use>
            </connection>
        </modulename_write>

        <modulename_read>
            <connection>
                <use>core_read</use>
            </connection>
        </modulename_read>
    </resources>
...