相同的DB,不同的工作站会产生不同的类型(Laravel,MySQL)

时间:2014-10-29 06:52:53

标签: php mysql laravel

我在Windows工作站上使用Laravel,在Linux上,我只使用以下行运行测试:

echo gettype(Patient::find(11)->case_id);

我已经添加了这样的列:

$table->integer('case_id');

db在linux上,我从windows远程连接。

结果:在windows机器上:“整数”,在linux机器上:“string”

(这引起了一个可怕的错误,我使用了===期望它是整数...)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

不同之处在于不同的MySQL驱动程序从数据库中提取数据的方式 更具体地说,只使用Linux中的字符串。

解决这个问题的最快方法是使用类似的比较:
($case_id == 5) // true代替($case_id === 5) // false假设$case_id="5";

也许Linux驱动程序也可以调整为不仅返回字符串 如果您提供驱动程序特定信息,也许有人可以通过微调驱动程序来帮助您。

如果您使用PDO,那么这些将有所帮助:

$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

第二行与字符串无关,但建议使用。