Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
条令1.2使用Zend Framework和MySQL 5将整型字段作为字符串值返回_Mysql_Zend Framework_Types_Doctrine 1.2 - Fatal编程技术网

条令1.2使用Zend Framework和MySQL 5将整型字段作为字符串值返回

条令1.2使用Zend Framework和MySQL 5将整型字段作为字符串值返回,mysql,zend-framework,types,doctrine-1.2,Mysql,Zend Framework,Types,Doctrine 1.2,知道为什么我的Doctrine 1.2模型返回整数定义字段的字符串值吗 基本模型定义为: abstract class Kwis_Model_Base_User extends Doctrine_Record { public function setTableDefinition() { $this->setTableName('user'); $this->hasColumn('id', 'integer', 4, array(

知道为什么我的Doctrine 1.2模型返回整数定义字段的字符串值吗

基本模型定义为:

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
    // ...
}
表模型定义为:

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
    // ...
}
控制器代码示例:

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();
    }
}

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

这难道不是在PHP中使用无类型变量的好处吗?这会导致什么问题?如果你愿意,你仍然可以对它进行数学运算。尽管如此,我还是怀疑除了字符串比较之外,您永远不需要对用户ID执行任何操作。

另外,作为对以下内容的回答,对左侧和右侧字符串的按位操作将对ASCII值进行操作

可以使用侦听器将int强制转换为int。创建一个新的侦听器并将其添加到记录中(1),或者只使用记录对象中现有的钩子模板(2)

1:

2:


嗯,这迫使我在使用平等性检查时更加小心。我发现我执行(int)强制转换的次数比我想要的要多(最好是为模型编写定制的getXXX/setXXX方法来执行这些强制转换)。但一般来说,我只是有点惊讶,因为基本模型上的hasColumn()方法指定了类型。正如你所暗示的,这不是一个关键问题;只是想确保我没有做错什么——这通常就是解释;-)如果您从MySQL中选择ID并试图将其作为“WHERE”条件传递给MongoDB,那么肯定会导致麻烦!因为如果MongoDB字段包含整数,并且您传递字符串,则clasue将失败。+1很好。无论我是通过水听器和/或监听器,还是在现场用标准GETXX/SETXXX访问器/调制器做记录,都是我必须考虑的问题。谢谢