Ingresar muchos registros en una sola inserción.

Saludos, estoy trabajando en yii por primera vez y me gustaria hacer que mi sistema de inventario ingrese muchos registros con las misma caracteristicas haciendolo una sola vez, me explico:

Si tengo 20 monitores de la misma marca y el mismo modelo, nesecito hacer que al indicar en "cantidad" que son 20, el sistema me ingrece un registro individual para cada uno de ellos y que al hacer esto cada uno de los monitores pese ha tener las mismas caracteristicas tengan un ID diferente para poder identificarlos individualmente.

Los mismo si la cantidad es diferente 5, 8, 28, etc.

Si alguien pudiera ayudarme con este problema le estaría muy agradecido.

hola eme30, es lo mismo que agregar un solo registro pero dentro un ciclo, por lo que necesitas un indice que controle las iteraciones, te pongo un ejemplo.En tu caso deberás capturar el número de iteraciones desde el formulario, supongo.





foreach ($publicacion as $key => $value): 

				

				


				$model->idcmvtoini=$lastid; 

				$model->tipopublicacion_idtipopublicacion=$_POST["public$value"];

				$model->lunes=$_POST["lunes$value"];

				$model->martes=$_POST["martes$value"];

				$model->miercoles=$_POST["miercoles$value"];

				$model->jueves=$_POST["jueves$value"];

				$model->viernes=$_POST["viernes$value"];

				$model->sabado=$_POST["sabado$value"];

				$model->domingo=$_POST["domingo$value"];

				$model->festivo=$_POST["festivo$value"];

						

				

				$model->save(); //guarda el registro actual

				$lastId = $model->getPrimaryKey()+1;


				

			endforeach;




Espero ser de ayuda.

si como mensiona @estebanhere pero creo que se podria hacer así tambien:


public function actionCreate()

	{

    	$model = new Registro();

    	$cantidad =Yii::$app->request->post('cantidad');


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

        	for($i=0; $i<$cantidad; $i++){

       	      		$model->save()

       	      		$lastId = $model->getPrimaryKey()+1;

       	      		$model->id = $lastid;

        	}

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

    	} else {

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

                    	'model' => $model,

        	]);

    	}

	}

no esta probado pero es una idea

estebanhere30 he estado tratando de entenderle pero realmente soy muy nobato y me cuesta muchisimo entender el ejemplo.

Hola eme30 que es lo que no entiendes? por eso es un foro para discutir lo que no entiendes.

no me preguntaste a mi pero aquí está la explicación de mi ejemplo :lol:

espero te ayude

Lo que te quieren decir amigo, es que si haces un ciclo en tu insert, este se podra duplicar cuantas veces tu se lo menciones en tu ciclo:




            $cantidad = $_GET['cantidad'];

            for($i=0; $i<$cantidad; $i++){

                        $model = new Inventario();

                        $model->marca = "DELL";

                        $model->modelo = "0909";

                        $model->precio = 999.99;

                        if($model->save()){

                              echo "Registro exitoso";

                        }

                }



Esa es la idea principal de lo que al parecer requieres.

NOTA: El id de tu registro puedes hacerlo autoincrementable en la BD, te despreocupas por el la accion para dar de alta.

Muchas gracias a todos por su ayuda, perdon si no contesto pronto pero debido a mi trabajo muchas beces no tengo mucho tiempo para dedicarle a mi proyecto, estaré probando los ejemplos que me han regalado y les comento mis avances.

Muchisimas gracias a todos por la ayuda, realmente me sirvieron mucho sus ejemplos, y gracias a ustedes y un excelente lic. Que tambien me hecho la mano con la solución ya funciona el ingreso tal y como queria. Dejo mi código por si alguien tiene la misma duda que yo en el futuro.





	public function actionCreate()

	{

		$model=new TnControlbienes;


		

		 $this->performAjaxValidation($model);


		if(isset($_POST['TnControlbienes']))

		{


			$model->attributes=$_POST['TnControlbienes'];


			if ($model-> Cantidad >1)

			{

				$cantidad = $model -> Cantidad;

				for($i=0; $i<$cantidad; $i++){


                        $modeltemp = new TnControlbienes();

                      	$modeltemp = $model;

                      	$modeltemp -> Cantidad = 1;

                      	date_default_timezone_set('America/El_Salvador');

						$modeltemp-> FechaCreacion = date('Y-m-d H:i:s');

                      	$modeltemp -> save();

                      	$lastId = $model->CodigoControl;

                        $model->CodigoControl = $lastId; 

                }

                $this->redirect(array('view','id'=>$modeltemp->CodigoControl));

               }else{

               	date_default_timezone_set('America/El_Salvador');

			$model-> FechaCreacion = date('Y-m-d H:i:s');

			if($model->save())

				$this->redirect(array('view','id'=>$model->CodigoControl));


               }


           }

           

		$this->render('create',array(

			'model'=>$model,

		));

	}