无法在 Yii2 中使用 dropDownList 取消设置外键值
Cannot unset foreign key value using dropDownList in Yii2
我有一个 Yii2 表单视图,代码如下。
<?= $form->field($model, 'field1')->dropDownList(ArrayHelper::map($fieldList, 'id', 'label'), ['prompt' => '']) ?>
上面的 field1
实际上是一个 VARCHAR,MySQL table 中的 NULLable 外键。如果我取消我的选择,选择空白选项并保存,我会收到外键完整性错误。
基本上,Yii2 试图将行更新为 '' 而不是 NULL。我该如何解决上述情况?
我也试过 array_merge
而不是 ['prompt' => '']
来添加一个带有 NULL 值的空白字段,仍然没有快乐。
编辑:
我最终检查了控制器中的空白,但理想情况下我不应该这样做。这是一个错误还是我做错了什么?
$loaded = $model->load(Yii::$app->request->post());
if ($model->field1 == '')
$model->field1 = null;
if ($loaded && $model->save()) {
}
您是否尝试过将此添加到您的模型规则中?:
public function rules()
{
return [
....
[['field1'], 'default'], // set "field1" as null if they are empty
];
}
您的约束错误也类似于您的相关 table 字段 1 无法设置为空。
我有一个 Yii2 表单视图,代码如下。
<?= $form->field($model, 'field1')->dropDownList(ArrayHelper::map($fieldList, 'id', 'label'), ['prompt' => '']) ?>
上面的 field1
实际上是一个 VARCHAR,MySQL table 中的 NULLable 外键。如果我取消我的选择,选择空白选项并保存,我会收到外键完整性错误。
基本上,Yii2 试图将行更新为 '' 而不是 NULL。我该如何解决上述情况?
我也试过 array_merge
而不是 ['prompt' => '']
来添加一个带有 NULL 值的空白字段,仍然没有快乐。
编辑: 我最终检查了控制器中的空白,但理想情况下我不应该这样做。这是一个错误还是我做错了什么?
$loaded = $model->load(Yii::$app->request->post());
if ($model->field1 == '')
$model->field1 = null;
if ($loaded && $model->save()) {
}
您是否尝试过将此添加到您的模型规则中?:
public function rules()
{
return [
....
[['field1'], 'default'], // set "field1" as null if they are empty
];
}
您的约束错误也类似于您的相关 table 字段 1 无法设置为空。