downloads
というCakePHP 3アプリケーションにテーブルがあり、そのテーブルにmaster
という名前のカラムがあります。CakePHP 3はヌル/空であればtinyint(1)フィールドを見つけることができません
$query = $this->Downloads->find()->where(['master' => true]);
しかし、ケーキは私がdownloads.master !== 1
ものを照会させません。フィールドタイプは私はこのようなdownloads.master == 1
すべてのレコードを見つけることができますTINYINT(1)
に設定されています。クエリが実行されたときに、これらの作品はどれも、すべては空の配列/オブジェクトを返しません:
$query = $this->Downloads->find()->where(['master' => false]);
$query = $this->Downloads->find()->where(['master' => 0]);
$query = $this->Downloads->find()->where(['master' => null]);
$query = $this->Downloads->find()->where(['master' => '']);
は、あなたがこれを可能にする条件として何を使うのですか?私はphpMyAdminのを使用して、私のテーブル内のレコードを検討してきました...
私の思考はそれがtrue
に反対だから、それはfalse
でなければならないことだったが、CakePHPの3でほとんどの事と同じように、彼らは必要以上にそれがより複雑にしたいです実際には両方のレコードがあります。master == 1
とmaster == null
のようになりますので、返される結果はゼロです。
を?それはエラーを投げているのですか?生成されたSQLをチェックしましたか? – drmonkeyninja
最初はブール値をnullにすることはできません。 Boolは、真実か偽かの定義によって、それ以外は何も意味しません。それはあなたの問題を設計変更する必要はありません。何も変更する必要はありません。ヌル(「デフォルトなし」)以上が必要な場合は、代わりにtinyint(2)とENUMソリューションを使用してください。 – mark