不能将SQL中的位值从Yii设置为NULL


Cannot set a bit value in SQL to NULL from Yii

每当我尝试这样做....

if($filter[11]['card'] == 'BOTH'){
    $marketingFilter->card_mandatory = null;
} else {
    $marketingFilter->card_mandatory = $filter[11]['card'] == 'YES' ? true : false;
}

…当$filter[11]['card'] = 'BOTH'时,SQL表中的值在运行保存方法后不会变为NULL。

card_mandatory为BIT值。

一旦属性$marketingFilter->card_mandatory被设置为null,它就永远不会改变。

我在上面写的代码工作得很完美,只是当我保存时,值永远不会正确输入。我做错了什么吗?

------添加更多代码

Yii::app()->db->beginTransaction();
$marketingFilter = new MarketingFilter();
$marketingFilter->name                          = $filter[22]['name'];
date_default_timezone_set('Canada/Montreal');
$date = date('m-d-Y H:i:s', time());
$marketingFilter->date_created                  = $date;
$marketingFilter->created_by                    = $loggedAccount->last_name . ", " .                    $loggedAccount->first_name;
$marketingFilter->total_members                 = '0';
if(count($filter[6]['gender']) == 2) {
     $marketingFilter->gender                    = $filter[6]['gender'][1];
}
if(count($filter[7]['language']) == 2) {
     $marketingFilter->language                  = $filter[7]['language'][1];
}
$marketingFilter->save();
Yii::app()->db->currentTransaction->commit();

card_mandatory不是必填字段,它允许为空。在SQL管理器中,我可以手动输入null,它工作得很好。card_mandatory是$marketingFilter中唯一的BIT值。我在代码中以同样的方式添加null到其他值(例如nvarchar, datetime2等),但这一个给了我一个脑动脉瘤。

new CDbExpression('NULL')代替NULL:

$marketingFilter->card_mandatory = new CDbExpression('NULL');

创建数据库查询时需要相同的表达式