如何将默认值添加到要保存的模型?
+--------------+--------------+-
| Field | Type |
+--------------+--------------+-
| id | int(11) | ->auto increment
| grant | double(12,2) |
| lcc | double(12,2) |
| encoded_by | int(11) | ->foreign key from tbl_user
+--------------+--------------+-
这是html表单代码。
<?= $form->field($model, 'grant')->textInput() ?>
<?= $form->field($model, 'lcc')->textInput() ?>
我提交错误提交..
SQLSTATE [23000]:完整性约束违规:1452无法添加或 更新子行:外键约束失败 (
ncddp
。tbl_sp_bub
,CONSTRAINTtbl_sp_bub_ibfk_2
FOREIGN KEY (encoded_by
)REFERENCESuser
(id
))正在执行的SQL是: INSERT INTOtbl_sp_bub
(grant
,lcc
)价值观(2,2)
据我所知,编码的值应该是当前用户ID。
我试过了。
<?= $form->field($model, 'grant')->textInput() ?>
<?= $form->field($model, 'lcc')->textInput() ?>
<? $model->encoded_by=yii::$app->user->identity->id ?>
以及控制器中的这个...
public function actionCreate()
{
$model = new TblSpBub();
$model->encoded_by=yii::$app->user->identity->id;//MY CODE
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['index']);
} else {
return $this->renderAjax('create', [
'model' => $model,
]);
}
}
但无济于事......
答案 0 :(得分:1)
有解决此问题的内置行为BlameableBehavior。这是你的用法。将其添加到您的模型中:
public function behaviors()
{
return [
[
'class' => BlameableBehavior::className(),
'createdByAttribute' => 'encoded_by',
'updatedByAttribute' => false, // Set it to false if you need automatically update it on create only
],
];
}
无需手动处理。