doukundong9652 2018-06-28 07:58
浏览 58
已采纳

无法从SocialEngine Zend中的db表中获取行集

I am creating a new Module in SocialEngine 4. Not much going on here. I have a model class for database table advancedrestapi_foods as follows:

class Advancedrestapi_Model_DbTable_Foods  extends Engine_Db_Table {

    protected $_name = 'advancedrestapi_foods';
    protected $_primary = 'food_id';
    protected $_rowClass = 'Advancedrestapi_Model_Foods';
    protected $_definition = 'engine4_advancedrestapi_foods';

    public function __toString() {
        return $this->_definition;
    }
}

And this is my index controller:

class Advancedrestapi_IndexController extends Core_Controller_Action_Standard {

    public function indexAction() {
        $foodTable = Engine_Api::_()->getDbTable('foods', 'advancedrestapi');
        $db = $foodTable->getAdapter();

        if ($foodTable->error)
            $err = true;

        $rawData = $db->select()
                ->from($foodTable)
                ->where('enabled = ?', true)
                ->query()
                ->fetchAll();
        $this->sendResponse($rawData);

        echo '<script>console.log(' . $err . '");</script>';
        error_log("Food name: " . $foodTable);
    }

    /**
     * HTTP Response Codes
     */
    const HTTP_OK = 200;

    public function sendResponse($data) {
        ob_clean();
        $this->_helper->json($data);
    }

}

When I browse to the index page of the plugin http://address/advancedrestapi, I get this error:

Zend_Db_Statement_Mysqli_Exception: Mysqli prepare error: Unknown table 'yourdb.engine4_advancedrestapi_foods' in /var/www/html/public_html/application/libraries/Zend/Db/Statement/Mysqli.php:77
Stack trace:
#0 /var/www/html/public_html/application/libraries/Zend/Db/Statement.php(115): Zend_Db_Statement_Mysqli->_prepare('SELECT `engine4...')
#1 /var/www/html/public_html/application/libraries/Zend/Db/Adapter/Mysqli.php(388): Zend_Db_Statement->__construct(Object(Zend_Db_Adapter_Mysqli), 'SELECT `engine4...')
#2 /var/www/html/public_html/application/libraries/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Adapter_Mysqli->prepare('SELECT `engine4...')
#3 /var/www/html/public_html/application/libraries/Zend/Db/Select.php(711): Zend_Db_Adapter_Abstract->query('SELECT `engine4...')
#4 /var/www/html/public_html/application/modules/Advancedrestapi/controllers/IndexController.php(20): Zend_Db_Select->query()
#5 /var/www/html/public_html/application/libraries/Zend/Controller/Action.php(516): Advancedrestapi_IndexController->indexAction()
#6 /var/www/html/public_html/application/libraries/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('indexAction')
#7 /var/www/html/public_html/application/libraries/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#8 /var/www/html/public_html/application/modules/Core/Bootstrap.php(84): Zend_Controller_Front->dispatch()
#9 /var/www/html/public_html/application/libraries/Engine/Application.php(160): Core_Bootstrap->run()
#10 /var/www/html/public_html/application/index.php(223): Engine_Application->run()
#11 /var/www/html/public_html/index.php(25): include('/var/www/html/p...')
#12 {main}

My table structure:

 describe engine4_advancedrestapi_foods;

    +---------------+-------------+------+-----+-------------------+-----------------------------+
    | Field         | Type        | Null | Key | Default           | Extra                       |
    +---------------+-------------+------+-----+-------------------+-----------------------------+
    | food_id       | int(11)     | NO   | PRI | NULL              | auto_increment              |
    | title         | varchar(50) | YES  |     | NULL              |                             |
    | creation_date | datetime    | YES  |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
    +---------------+-------------+------+-----+-------------------+-----------------------------+
  • 写回答

1条回答 默认 最新

  • doujing6053 2018-07-01 06:56
    关注

    It looks fine and your code also works for me. Just create a table in your database. The structure is below.

    CREATE TABLE IF NOT EXISTS `engine4_advancedrestapi_foods` (
    

    food_id int(10) NOT NULL AUTO_INCREMENT, title varchar(50) NOT NULL, creation_date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (food_id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

    screenshot

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 求计算赫斯特(Hurst)指数
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大