条令1.2使用Zend Framework和MySQL 5将整型字段作为字符串值返回
知道为什么我的Doctrine 1.2模型返回整数定义字段的字符串值吗 基本模型定义为:条令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(
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访问器/调制器做记录,都是我必须考虑的问题。谢谢