Как получить данные из моей пользовательской таблицы (сущности)?


<?php


$installer = $this;
echo 'Running This Installation: '.get_class($this)."\n <br /> \n"; 
$installer->startSetup();

$table = $installer->getConnection()
->newTable($installer->getTable('amber_maintenance_mode'))

->addColumn('id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
    'identity'  => true,
    'unsigned'  => true,
    'nullable'  => false,
    'primary'   => true,
    ), 'Id')

->addColumn('state', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
    'nullable'  => false,
    ), 'State'
    )

->addColumn('created_by', Varien_Db_Ddl_Table::TYPE_VARCHAR, null, array(
    'nullable'  => false,
    ), 'Created by'
    )

->addColumn('start_date', Varien_Db_Ddl_Table::TYPE_DATE, null, array(
    'type' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
    'nullable' => true,
    'default' => null,
    'comment' => 'Start date'
    ), 'Start Date'
    )

->addColumn('end_date', Varien_Db_Ddl_Table::TYPE_DATE, null, array(
    'type' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
    'nullable' => true,
    'default' => null,
    'comment' => 'End date'
    ), 'End Date'
    )

->addColumn('down_reason', Varien_Db_Ddl_Table::TYPE_TEXT, null, array(
    'nullable'  => false,
    ), 'Down reason'
    );

$installer->getConnection()->createTable($table);

$installer->endSetup();

Теперь пытаюсь получить данные из таблицы....

$date = Mage::getModel('amber/maintenance_mode')->getCollection();
$date = Mage::getModel('amber_maintenance_mode')->getCollection();
$date = Mage::getModel('amber_maintenance/amber_maintenance_mode')->getCollection();

Ничего не работает...... что я делаю не так? Какая форма правильная, если таковая имеется?

Вот моя конфигурация "обязательный раздел";)

        <models>
        <amber_maintenance>
            <class>Amber_Maintenance_Model</class>
            <resourceModel>maintenance_mysql4</resourceModel>
        </amber_maintenance>

        <amber_maintenance_resource>
            <class>Amber_Maintenance_Model_Resource</class>
                <entities>
                    <mode>
                        <table>amber_maintenance_mode</table>
                    </mode>
                </entities>

        </amber_maintenance_resource>   
    </models>

    <resources>
        <maintenance_setup>
            <setup>
                <module>Amber_Maintenance</module>
                <class>Mage_Core_Model_Resource_Setup</class>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </maintenance_setup>
        <maintenance_write>
            <connection>
                <use>core_write</use>
            </connection>
        </maintenance_write>
        <maintenance_read>
            <connection>
                <use>core_read</use>
            </connection>
        </maintenance_read>
    </resources>
Author: Rob D. A., 2017-02-04

2 answers

Обновите свой тег models, как показано ниже,

<models>
    <amber_maintenance>
        <class>Amber_Maintenance_Model</class>
        <resourceModel>amber_maintenance_resource</resourceModel>
    </amber_maintenance>
    <amber_maintenance_resource>
        <class>Amber_Maintenance_Model_Resource</class>
            <entities>
                <mode>
                    <table>amber_maintenance_mode</table>
                </mode>
            </entities>
    </amber_maintenance_resource>   
</models>

Теперь используйте,

Mage::getModel('amber_maintenance/mode')->getCollection();

Или

$collection = Mage::getResourceModel('amber_maintenance/mode_collection');
 5
Author: Jaimin Sutariya, 2017-02-04 17:58:15

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

<resourceModel>maintenance_mysql4</resourceModel>

И затем вы используете

    <amber_maintenance_resource>
        <class>Amber_Maintenance_Model_Resource</class>
            <entities>
                <mode>
                    <table>amber_maintenance_mode</table>
                </mode>
            </entities>
    </amber_maintenance_resource>  

В вашей записи вы должны написать:

    <resourceModel>amber_maintenance_resource</resourceModel> 
 3
Author: Julien Loizelet, 2017-02-04 17:55:32