Obtener Valores

Buenos dias.

Estoy comenzando a practicar sobre el framework Yii y tengo una duda y es la siguiente:

tengo una tabla llamada inventario con sus propiedades (referencia, idarticulos, cantidad, stock_min, stock_max y precio). yo realice en Gii genere el modelo de la tabla de inventario y en el crud me genero el controller y todo lo demás. Quisiera saber como puedo modificar el valor de la cantidad del articulo cuando yo le agregue o quite otras cantidades de ese atriculo.

por ejemplo:

referencia: 01 (que es zapato tenis Adidas)

cantidad: 10 (exitencia anterior)

cantidad agregada o quitar: 5 (ingreso 5 pares) traida de un textfield del form

cantidad total: 15

Adiciono el modelo y el controller.

gracias

Hola Juan Pablo,

No estoy muy seguro de tener claro lo que desea, pero aquí va el código genérico requerido:

Hay dos posibilidades, una limpia y una no tanto, pero más sencilla:

  1. La forma limpia (en el modelo)

a) Agregar al modelo un campo que podría llamarse "cantidad_agregada" o algo similar, para que el modelo lo reconozca como un campo que puede existir en el formulario

B) Adicionar el campo a las “rules” como “safe”.

c) Agregar la función beforeSave() al modelo así:




public function beforeSave(){

  if($this->getIsNewRecord()){

    $this->cantidad = $this->cantidad + $this->cantidad_agregada; // Funciona con suma y resta

  }

  return parent::beforeSave(); // Importantísimo incluir esta línea

}



Nota: El campo en la vista se agrega como un campo estándar.

  1. No tan limpia (en el controller)

a) Asumiendo que el textfield que agrega se llama "agregada", entonces sería algo similar a lo realizado en el modelo, pero en lugar de ir en el modelo, entonces se incluye en el controller (algo más al estilo clásico de PHP), en la función actionUpdate() que podría ser algo como:




// Después de $model->attributes = $_POST['Inventario'];

$model->cantidad = $this->cantidad + $_POST['agregada'];



Saludos.

Has probado de guardar un campo hiden con la cantidad "original" ?

en el controller antes de asignar atributos recuperas el valor original.

en $model->cantidad, segun tu definicion, vas a tener cuanto queres agregar o quitar

por ende :

con esta formula lo re-calculas:

$model->cantidad = $cant_original + $model->cantidad

es los mas rapido que se me ocurre.

tambien me gusto la propuesta de "Robregonm"

Saludos