Yii2 无法将模型属性保存为空?
这是我的标准规则Yii2 无法将模型属性保存为空?,yii2,Yii2,这是我的标准规则 public function rules() { return [ [['header_image', 'profil_picture'], 'default', 'value' => null], [['yahoo_id', 'whats_app_id', 'bbm_id'], 'string', 'max' => 20], [['bbm_id'], 'match', 'pa
public function rules() {
return [
[['header_image', 'profil_picture'], 'default', 'value' => null],
[['yahoo_id', 'whats_app_id', 'bbm_id'], 'string', 'max' => 20],
[['bbm_id'], 'match', 'pattern' => '/^[a-zA-Z0-9]+$/', 'message' => 'Alpha numeric only'],
[['header_image_file', 'profil_picture_file'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpeg, jpg, bmp', 'maxSize' => 10240 * 20240 * 2],
[['deskripsi_toko'], 'string', 'max' => 300],
[['agent_id', 'nama_toko', 'tag_line', 'header_image', 'profil_picture', 'yahoo_id', 'whats_app_id', 'bbm_id', 'deskripsi_toko'], 'filter', 'filter' => function($value) {
return BeoHelper::replace_mc($value);
}],
];
}
这是我的控制器
$storeSetting->header_image = null;
if($storeSetting->save()){
return $this->redirect(Yii::$app->request->referrer);
}
替换_mc函数
public static function replace_mc($str)
{
$new_data = preg_replace('/[^A-Za-z0-9\-\ \.\:\@\+]/', '', $str);
return $new_data;
}
记录保存成功,但是标题\u图像
是空字符串而不是空字符串
它应该将header\u image
设置为null,我做错了什么
提前感谢。在
替换\u mc()
中尝试附加条件:
您在数据库中将此列设置为“NOTNULL”了吗?在这种情况下,它保存为空字符串。@Bizley否,not null在我的navicat中未选中,可能是我的规则有问题,不是吗?我可以看到此属性正在被
BeoHelper::replace_mc()
-过滤,看看这是否是原因。@Bizley是正确的,无论如何,请回答我的问题。我的问题已更新。与$str==null有什么区别?提前感谢。当$str
为null
时,它不会继续执行preg\u replace
,而是将其返回为null
。给出了=
和=
之间的区别。
public static function replace_mc($str)
{
return $str === null
? $str
: preg_replace('/[^A-Za-z0-9\-\ \.\:\@\+]/', '', $str);
}