str_pad 使用 Yii2 在 Mysql 字段中不起作用



我在Yii2控制器中创建了这个操作:

public function actionCreate2()
{
$searchModel = new BibliografieSearch();
$searchModel = new CodiciSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);    
$model = new Elenchi();  
$model->Modified = date( 'y-m-d' );


if ($model->FogliDaO) {
$model->FogliDaO = str_pad($model->FogliDaO, 8, "0", STR_PAD_LEFT);
}
if ($model->load(Yii::$app->request->post()) && $model->save()) {

return $this->redirect(['index', 'sort' => '-IDElenco']);
}
return $this->render('create2', [
'model' => $model,
'dataProvider' => $dataProvider,
'searchModel' => $searchModel

]);
}

现在,如果我写"28v"在字段(FogliDaO)中保存新记录,Mysql数据库中的结果始终是"28v"而不是"0000028v"。我哪里错了?(FogliDaO是VARCHAR)。我需要帮助。非常感谢!!!!

如果你想改变$model的内容,你必须在load()之后和save()函数之前分配填充值。否则将覆盖赋值

public function actionCreate2()
{
$searchModel = new BibliografieSearch();
$searchModel = new CodiciSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);    
$model = new Elenchi();  


if ($model->load(Yii::$app->request->post()) ) {
$model->Modified = date( 'y-m-d' );

if ($model->FogliDaO) {
$model->FogliDaO = str_pad($model->FogliDaO, 8, "0", STR_PAD_LEFT);
}
$model->save();
return $this->redirect(['index', 'sort' => '-IDElenco']);
}
return $this->render('create2', [
'model' => $model,
'dataProvider' => $dataProvider,
'searchModel' => $searchModel

]);
}

$model->load()函数将相应的模型数据从$_POST复制到实际的(新)模型中。所以如果你在load()函数之前赋值这个值就会丢失因为load会用$_POST content覆盖这个值

最新更新