mysql - Doctrine 1.2 模型使用 Zend Framework 和 MySQL 5 将整数字段返回为字符串值

标签 mysql zend-framework types doctrine-1.2

知道为什么我的 Doctrine 1.2 模型会为 integer 定义的字段返回 string 值吗?

基本模型定义为:

abstract class Kwis_Model_Base_User extends Doctrine_Record
{
    public function setTableDefinition()
    {
        $this->setTableName('user');
        $this->hasColumn('id', 'integer', 4, array(
             'unsigned' => true,
             'primary' => true,
             'autoincrement' => true,
             ));

        // more fields
        // ...
    }

表模型定义为:

class Kwis_Model_UserTable extends Kwis_Model_BaseTable
{

    /**
     * Returns an instance of this class.
     *
     * @return object Kwis_Model_UserTable
     */
    public static function getInstance()
    {
        $table = Doctrine_Core::getTable('Kwis_Model_User');
        return $table;
    }

    // other methods
    // ...
}

示例 Controller 代码:

class TestController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $userTable = Kwis_Model_UserTable::getInstance();
        $user = $userTable->find(1);
        echo "<pre>" . var_dump($user->id) . "</pre>"; die();
    }
}

产生的输出:

 string '1' (length=1)

任何想法,非常感谢。 ;-)

最佳答案

同时作为对以下问题的回答,对字符串左侧和右侧的按位运算将对 ASCII 值进行运算。

您可以使用 hydration 监听器将 int 转换为 int。要么创建一个新的 hydration listener 并将其添加到 record(1),要么只使用 record 对象中现有的钩子(Hook)模板(2)。

1:http://www.doctrine-project.org/projects/orm/1.2/docs/manual/event-listeners/pl#record-listeners

2:

   abstract class My_Rec extends Doctrine_Record {
    function postHydrate($event) {
        $data = $event->data;
        $data['status'] = (int) $data['status'];
        $event->data = $data;       
    }
}

关于mysql - Doctrine 1.2 模型使用 Zend Framework 和 MySQL 5 将整数字段返回为字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4484385/

相关文章:

TypeScript 接口(interface)模板

C++ 命名模板中的当前类型

javascript - 我怎样才能在我的页面中获得所有出行模式(如驾驶、公交、骑自行车、步行)的距离和持续时间,并将其存储在数据库中

java - Java医生约会预约数据库(mysql)程序..在设计约会架构时遇到麻烦

javascript - 使用 PHP、AJAX 和 jQuery 搜索 MySQL 数据库

mysql - 如何将一个值复制 10 次到相邻列?

PHP 警告 : PHP Startup: Unable to load dynamic library '\xampp\php\e xt\php_pgsql. dll

jquery - 验证空字段并列出所有错误并通过 jquery 突出显示所有错误字段并在 zend 框架中显示顶部的错误列表

php - 在 Zend Framework 中捕获并记录 fatal error 、警告和通知

java - 如何实现枚举类型的某些方法