yii2 - 如何以一种形式保存输入并自动更新另一种形式 table

yii2 - how to save input in one form and automatically update another table

我的病情有时一直困扰着我。我有两个模型 sewalockerloker,这两个模型是相关的。我在 sewalockers 中有一张表格,需要将储物柜号码填写为 loker_id。提交表单后,我希望 status 中选定的 loker_id 分配为 'loaned',而不是 loker table 中的 'available'。我该怎么做?

这是我的 sewaController :

<?php

namespace app\controllers;

use Yii;
use app\models\SewaLocker;
use app\models\sewaSearch;
use app\models\loker;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;


class SewaController extends Controller
{
 public function behaviors()
 {
    return [
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['post'],
            ],
        ],
    ];
}

/**
 * Lists all SewaLocker models.
 * @return mixed
 */
public function actionIndex()
{
    $searchModel = new sewaSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}

/**
 * Displays a single SewaLocker model.
 * @param integer $id
 * @return mixed
 */
public function actionView($id)
{
    return $this->render('view', [
        'model' => $this->findModel($id),
    ]);
}

/**
 * Creates a new SewaLocker model.
 * If creation is successful, the browser will be redirected to the 'view' page.
 * @return mixed
 */
public function actionCreate()
{
    $model = new SewaLocker();
    $loker = new loker();

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['view', 'id' => $model->id_sewa]);
    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

在创建中你应该这样做

如果保存了 SewaLocker 模型,您就可以检索正确的 loker 模型并进行更新。

public function actionCreate()
{
    $model = new SewaLocker();


    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        $loker = $this->findLokerModel($model->locker_id);
        $loker->status ="Loaned not available";
        $loker->save();

        return $this->redirect(['view', 'id' => $model->id_sewa]);
    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

protected function findLokerModel($id)
{
    if (($model = Loker::findOne($id)) !== null) {
        return $model;
    } else {
        throw new NotFoundHttpException('The requested page does not exist.');
    }
}