Php 当我刷新页面时,我的应用程序继续将数据插入数据库Yii2
这就是行动Php 当我刷新页面时,我的应用程序继续将数据插入数据库Yii2,php,database,yii2,Php,Database,Yii2,这就是行动 public function actionEfetuarPedidoReserva($idQuarto){ $modelPedidoReservaQuarto = new PedidoReservaQuarto(); $modelPedidoReserva = new PedidoReserva(); $model = new ComodidadesExtra(); $modelListaComodidades = new ListaComodida
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
]);
}
}
}
当我刷新页面时,它添加最后插入的PeddoreServaid+1;
我想知道我的方法是否正确。您的问题是每次调用
$model=new-comodiadesextra()时都会创建comodiadesxtra
的新实例代码>。III2将其视为新的独立行,并且需要告诉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
]);
}
此操作是如何触发的?您的意思是什么?因为您每次调用该操作时都在保存模型。为什么首先保存模型,然后加载来自POST的数据?因为我需要将数据插入表中,而该表与另一个表的数据挂起。例如,首先我需要在PedidoReservaQuarto上插入数据,然后插入到PedidoReservashow表单中,您从中保存了什么?您是否只有$model
post?