Yii2:将复选框 false 保存为 NULL
Yii2: save checkbox false as NULL
在 Yii2 中,我 ActiveForm
带有复选框字段。在 mysql 数据库中,tinyint(1)
列可以是 NULL
。
我需要未选中的复选框(false
值)在数据库中保存为 NULL
。目前当复选框未被选中时,它被保存为 (int) 0
.
将 false
值保存为 NULL
的正确方法是什么?
这是模型:
class ProductToProductCategory extends ActiveRecord {
public function rules()
{
return [
['product_category_id', 'required'],
['product_category_id', 'integer'],
['is_main', 'boolean'],
];
}
}
视图如下:
<?= $form->field($model, "is_main")->checkbox() ?>
从未尝试过,但您应该能够实现已保存模型的 beforeSave 方法。
public function beforeSave($insert)
{
if (!parent::beforeSave($insert)) {
return false;
}
if( $this->scenario == "strangeNullScenario" ) {
if( empty( $this->FIELD ) ) {
$this->FIELD = null;
}
}
return true;
}
public function rules()
{
return [
['product_category_id', 'required'],
['product_category_id', 'integer'],
['is_main', 'boolean'],
['is_main', 'filter', function ($value) {
// return value you need
return $value ?: null;
}, 'skipOnError' => true],
];
}
只需通过取消选中选项
<?= $form->field($model, "is_main")->checkbox(['uncheck' => null]) ?>
在 Yii2 中,我 ActiveForm
带有复选框字段。在 mysql 数据库中,tinyint(1)
列可以是 NULL
。
我需要未选中的复选框(false
值)在数据库中保存为 NULL
。目前当复选框未被选中时,它被保存为 (int) 0
.
将 false
值保存为 NULL
的正确方法是什么?
这是模型:
class ProductToProductCategory extends ActiveRecord {
public function rules()
{
return [
['product_category_id', 'required'],
['product_category_id', 'integer'],
['is_main', 'boolean'],
];
}
}
视图如下:
<?= $form->field($model, "is_main")->checkbox() ?>
从未尝试过,但您应该能够实现已保存模型的 beforeSave 方法。
public function beforeSave($insert)
{
if (!parent::beforeSave($insert)) {
return false;
}
if( $this->scenario == "strangeNullScenario" ) {
if( empty( $this->FIELD ) ) {
$this->FIELD = null;
}
}
return true;
}
public function rules()
{
return [
['product_category_id', 'required'],
['product_category_id', 'integer'],
['is_main', 'boolean'],
['is_main', 'filter', function ($value) {
// return value you need
return $value ?: null;
}, 'skipOnError' => true],
];
}
只需通过取消选中选项
<?= $form->field($model, "is_main")->checkbox(['uncheck' => null]) ?>