我在数据库表active
中有一个列,它应该返回用户是否已确认邮件。它是tinyint(1),如果它设置为0并且我严格针对FALSE运算符进行测试,则不会返回TRUE。我使用 ORM 与数据库通信。
这是在 MySQL 数据库中设置的:
事件的tinyint(1) 是 0
if ($user->active === FALSE) // returns FALSE
if ($user->active === '0') // returns TRUE
我一直在 API 中搜索解决方案,并且在数据库类中已经有tinyint 数据类型。
我是否必须使用 == 而不是 === 或者还有其他我可以做的事情?
最佳答案
为了保持一致,从 3.0 开始,将数据库数据转换为 PHP 等效项已被删除,这意味着你是对的 - 没有严格的比较:)
如果你真的想要它,你可以做的是覆盖 ORM::_load_values()
与 ORM::list_columns()
结合以转换为“正确”的数据类型(也就是说,如果您继续使用 MySQL 驱动程序,因为迁移到 PDO 会破坏一些东西)。
关于mysql - 以原始数据类型从数据库返回值 (Kohana ORM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9821087/