Mage :: getModel ('module/model')-> getData возвращает пустой массив
-
16-10-2019 - |
Вопрос
Я пытаюсь извлечь данные из таблицы. Для этого я использовал
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.