2 Tabelas com um Form

Estou tentando alterar o campo ‘prod_qtde’ na tabela ‘produtos’ quando salvar usando o form de Itens do pedido usando no ‘ItemPedidoController’ a função:




 public function actionCreate()

    {

        $model = new ItemPedido();

        $produto = new Produtos();


        if ($model->load(Yii::$app->request->post()) && $model->save()) {

            if($model->validate()) {

                $produto->attributes = $model->produto_id;

                $qtde_old = $produto->prod_qtde;

                $qtde_new = $qtde_old - $model->quantidade;

                $produto->prod_qtde = $qtde_new;

                $produto->save();

            }

            return $this->redirect(['pedido/view', 'id' => $model->pedido_id, 'produto_id' => $model->produto_id]);

        } else {

            return $this->render('create', [

                'model' => $model,

            ]);

        }

    }



Quando incluir um item de venda, diminuir o estoque. Como faço?

Opa seria quando salvar um pedido, diminuir a quantidade na tabela ??

se for, dpois do SAVE() coloca um comando update na tabela retirando a quantidade q foi vendida.

Isso mesmo, só não entendi como seria o update.

Não seria interessante colocar essa regra diretamente no Model de ItemPedido? Pesquise sobre o método afterSave.

Espero ter ajudado.

Muito obrigado amigo. Suas dicas ajudaram muito.

Ficou assim:




    public function actionCreate()

    {

        $model = new ItemPedido();

        $produto = new Produtos();


        if ($model->load(Yii::$app->request->post()) && $model->save()) {

            $qtde_old =0;

            $qtde_new=0;


            $qtde_old = Produtos::findOne($model->produto_id)->prod_qtde;

            $qtde_new = $qtde_old - $model->quantidade;


            $produto->updateAll(['prod_qtde'=>$qtde_new],['id'=>$model->produto_id]);


            Yii::$app->session->setFlash('Message', 'Produto incluído.');

            return $this->redirect(['pedido/view', 'id' => $model->pedido_id]);

        } else {

            return $this->render('create', [

                'model' => $model,

            ]);

        }

    }



[RESOLVIDO]