每当我尝试这样做....
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');
创建数据库查询时需要相同的表达式