【发布时间】:2018-03-30 01:33:36
【问题描述】:
我正在使用内存数据库中的 sqlite 运行单元测试,但遇到了问题。
当我使用 mysql 数据库执行测试时,以下比较可以正常工作
if ($item->user_id === Auth::id())
如果数字匹配,它将评估为 true,如果不匹配,则评估为 false。当我在内存数据库中使用 sqlite 时,条件语句将始终返回 false,因为 user_id 属性作为 string 而不是正确的 int 数据类型返回。
我读过一些帖子和 cmets 说这是 PHP 中 sqlite 的可配置的东西,其他人说它不能改变。我想在我的测试中使用内存中的 sqlite 数据库,但如果我不能改变这种行为,我必须改变我的条件以使用== 而不是更严格的===。如何更改 sqlite 查询的行为?
更新
我也尝试将其添加到 sqlite 配置中
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'options' => [
PDO::ATTR_STRINGIFY_FETCHES => false,
PDO::FETCH_NUM => true,
],
],
这也无济于事。
【问题讨论】: