0

我在数据库表中有一个列,active它应该返回用户是否已确认邮件。它是 tinyint(1),如果它设置为 0,并且我严格针对 FALSE 运算符对其进行测试,则不会返回 TRUE。我使用 ORM 与数据库通信。

这是在 MySQL 数据库中设置的:
active tinyint(1) Yes 0

if ($user->active === FALSE) // returns FALSE
if ($user->active === '0') // returns TRUE

我一直在 API 中寻找解决方案,在 Database 类中已经有 tinyint 数据类型。

我必须使用 == 而不是 === 还是我可以做其他事情?

4

1 回答 1

2

为了保持一致,自 3.0 起,将 db 数据转换为 PHP 等效项已被删除,这意味着您是对的 - 没有严格的比较 :)

如果你真的想要它,你可以做的是覆盖ORM::_load_values()ORM::list_columns()转换为“正确”的数据类型(也就是说 - 如果你使用 MySQL 驱动程序,因为移动到 PDO 会破坏事情)。

于 2012-03-22T11:27:45.937 回答