Laravel 4.2 BIT数据类型问题

时间:2014-12-30 10:48:48

标签: mysql laravel-4 bit

数据库表中有一个bit(1)类型列。但它没有像我预期的那样工作。

问题

$invitee = new Invitee();
$invitee->name = "name1";
$invitee->email = "example@mail.com";
$invitee->isActive = 0;    // "b'0'", '0', false,   are also not working
$invitee->save();

我需要在0列中添加零isActive,但每当我尝试添加1的记录时,其值0

我在here.找到了一个问题。但答案并没有描述问题的原因。很高兴有人能解释这个问题。

1 个答案:

答案 0 :(得分:13)

拥有bit类型字段意味着无论何时插入/更新该字段,都需要使用原始值作为解决方法。

那是因为默认情况下PDO会绑定这些值,它们将被视为字符串,因此bit将导致1

DB::table('table')->insert(['bit_field' => 0]); // inserts 1
DB::table('table')->insert(['bit_field' => DB::raw(0)]); // inserts 0

如果可以的话,我建议将其更改为tinyint