php - 当我刷新页面时,我的应用程序继续将数据插入数据库 Yii2
问题描述
有动作
public function actionEfetuarPedidoReserva($idQuarto){
$modelPedidoReservaQuarto = new PedidoReservaQuarto();
$modelPedidoReserva = new PedidoReserva();
$model = new ComodidadesExtra();
$modelListaComodidades = new ListaComodidadesQuarto();
$modelPedidoReservaQuarto->quartoId = $idQuarto;
if($modelPedidoReservaQuarto->save()){
$modelPedidoReserva->nPessoas = 2;
$modelPedidoReserva->preco = 70.00;
$modelPedidoReserva->reservaQuartoId = $modelPedidoReservaQuarto->id;
$modelPedidoReserva->userInfoId = Yii::$app->user->id;
if($modelPedidoReserva->save()){
$model->pedidoReservaId = $modelPedidoReserva->id;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['efetuar-pedido-reserva', 'idQuarto' => $idQuarto]);
}
return $this->render('../comodidades-extra/create', [
'model' => $model, 'modelLista' => $modelListaComodidades
]);
}
}
}
当我刷新页面时,它会添加最后插入的 pedidoreservaid + 1;我想知道我这样做是否正确。
解决方案
您的问题是ComodidadesExtra
每次调用$model = new ComodidadesExtra();
. Yii2 将其视为新的独立行,您需要告诉 Yii2 您应该取而代之的是现有行,使用:
$model = ComodidadesExtra::find()
->where(['pedidoReservaId' => $modelPedidoReserva->id])
->one();
您的控制器应如下所示:
if($modelPedidoReserva->save()){
if(null===($model = ComodidadesExtra::find()->where(['pedidoReservaId' => $modelPedidoReserva->id])
->one())) {
$model = new ComodidadesExtra();
}
$model->pedidoReservaId = $modelPedidoReserva->id;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['efetuar-pedido-reserva', 'idQuarto' => $idQuarto]);
}
return $this->render('../comodidades-extra/create', [
'model' => $model, 'modelLista' => $modelListaComodidades
]);
}
推荐阅读
- python - 何将列表附加到数据框?
- python - .findall(文本)上的语法无效,仅突出显示 ( 或随机字母?
- sql - Oracle XMLTABLE,具有属性的根
- elasticsearch - ElasticSearch _count 和 _search 应用相同的查询
- php - imagefttext() 函数 (php) 增加图像的大小
- ssas - 如何在 MDX 中使用中值函数?
- laravel - 不能使用 hasOne 关系来放置限制
- datetime - 获取本地化日期的毫秒数,考虑夏令时
- javascript - typescript 到 javascript 回调函数无法访问 typescript 全局变量
- scala - 如何修复 leetcode98 使用递归函数验证二叉搜索树?