0

データベーステーブルactiveに、ユーザーがメールを確認したかどうかを返す列があります。これはtinyint(1)であり、0に設定されていて、FALSEに対して厳密にテストした場合、演算子はTRUEを返しません。ORMを使用してデータベースと通信します。

これはMySQLデータベースで設定されます:
active tinyint(1)はい0

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

私はAPIで解決策を探していましたが、データベースクラスにはすでにtinyintデータ型がありました。

===の代わりに==を使用する必要がありますか、それとも他にできることがありますか?

4

1 に答える 1

2

一貫性を保つために、3.0以降、dbデータをPHPの同等物にキャストすることは削除されました。つまり、あなたが正しいことを意味します-厳密な比較はありません:)

本当に必要な場合にできることは、上書きORM::_load_values()と組み合わせORM::list_columns()て「正しい」データ型にキャストすることです (つまり、PDO に移行すると問題が発生するため、MySQL ドライバーを使用している場合)。

于 2012-03-22T11:27:45.937 に答える