我目前正在构建一个symfony / doctrine应用程序,一个模型具有以下结构:
Session:
columns:
session_id:
type: integer(8)
primary: true
autoincrement: true
session_number:
type: string(30)
这正确地映射到数据库:
CREATE TABLE `session` (
`session_id` bigint(20) NOT NULL AUTO_INCREMENT,
`session_number` varchar(30) NOT NULL,
所以我们在那里很安全。
然后在尝试创建新记录时,代码为:
$newSession = new Session();
$newSession->session_number = session_id();
$newSession->save();
//...
echo $newSession->session_id; //<------ this will return a string '1'
最后一行是有问题的。 session_id字段使用最后一个标识值填充,但作为字符串!!
首先,我认为学说是罪魁祸首,但随后调试代码,我发现PDO似乎实际上是将值作为字符串返回的那个。被调用的方法是:
dbh->lastInsertId()
所以显而易见的问题是:我该如何解决这个问题?。我在互联网上发现了这些东西,但还没有尝试过:
答案 0 :(得分:0)
您可能希望使用转换功能see php manual。
$myInteger = intval($myString)
如果字符串代表一个太高的数字要转换为整数(并避免代码中有一些令人讨厌的间歇性错误),为了发送异常,请使用以下代码包围:
$myInteger = intval($myString)
if ($myInteger === PHP_INT_MAX) { // PHP 4.4.0 & 5.0.5 min
throw new Exception('Integer out of range, please call your developer for bug fixing!')
}