Mage :: getModel ('module/model')-> getData возвращает пустой массив

magento.stackexchange https://magento.stackexchange.com/questions/10269

Вопрос

Я пытаюсь извлечь данные из таблицы. Для этого я использовал

mage::getModel('module/model')->getData

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

Между этой моделью существует несоответствие

class Ps_Prefs_Model_Prefsformelements
extends Mage_Core_Model_Abstract
{
protected function _construct()
{
    $this->_init('ps_prefs/prefsformelements');
}

}

class Ps_Prefs_Model_Resource_Prefsformelements
extends Mage_Core_Model_Resource_Db_Abstract
{
protected function _construct()
{
    $this->_init('ps_prefs/prefsformelements', 'idform_elements');
}
}

class Ps_Prefs_Model_Resource_Prefsformelements_Collection
extends Mage_Core_Model_Resource_Db_Collection_Abstract
{
protected function _construct()
{
    $this->_init('ps_prefs/prefsformelements');
}
}

и другие модели в моем модуле. Это описание лежит в namespace_module/... часть звонка. Как видите, эта модель использует namespace_module/... Пока мои другие модели работают нормально, просто module/... Я попытался запустить приведенный выше код, используя просто module/... Но я получаю ошибку can't retrieve entity config Но если я попытаюсь запустить другой, используя это namespace_module/... Я начинаю бросать ошибки, почему?

Я рассмотрел свою конфигурацию, но если это так, почему я не получаю ошибки, когда использую namespace_module/... И почему это не сработает, когда я заставляю это соответствовать другим моделям?

===

РЕДАКТИРОВАТЬ

===

<config>
...
  <global>        
    <models>
        <prefs>
            <class>Ps_Prefs_Model</class>
            <resourceModel>prefs_resource</resourceModel>
        </prefs>

        <prefs_resource>
            <class>Ps_Prefs_Model_Resource</class>
            <entities>
                <prefs>
                    <table>prefcentre</table>
                </prefs>
                <prefsemail>
                    <table>prefcentre_options</table>
                </prefsemail>
                <prefsform>
                    <table>pref_form_elements</table>
                </prefsform>
            </entities>
        </prefs_resource>
    </models>
  ...
</global>
...
</config>
Это было полезно?

Решение

Я думаю, что проблема в том, что у вас нет определения для таблицы prefs/prefsformelements. Анкет Если вы посмотрите на то, как работает инициатор ресурса, он занимает следующее:

/**
 * Standard resource model initialization
 *
 * @param string $mainTable
 * @param string $idFieldName
 * @return Mage_Core_Model_Resource_Abstract
 */
protected function _init($mainTable, $idFieldName)
{
    $this->_setMainTable($mainTable, $idFieldName);
}

Поэтому, глядя на это и ваш config.xml, вам не хватает таблицы, которая совпадает prefsformelements Но у вас есть другие, которых вы могли бы смешать имена.

<prefsformelements>
    <table>pref_form_elements</table>
</prefsformelements>

Другие советы

Используйте Mage :: GetModel вместо Mage :: GetModel.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top