[Yii 1] Salvare Relazione Many-Many

Ciao,

ho una tabella dipendenti e una tabella mansioni

Ogni dipendente può avere più mansioni e, naturalmente, ogni mansione può essere associata a più dipendenti.

Quindi ho una terza tabella dipendenti_mansioni che contiene i soli campi mansioni_id e dipendenti_id

Nella view create del dipendente ho fatto in modo di avere un campo del form che si popola con un elenco di id delle mansioni che voglio associare al dipendente.

Ho trovato anche estensioni che permettono la gestione semplificata della relazione many-many ma, in questo caso, io devo ‘solo’ salvare i dati del dipendente e contestualmente aggiornare la tabella dipendenti_mansioni con le nuove associazioni create

Come si fa?

Me la canto e me la suono :lol:

ok ho fatto così:

nel model Dipendenti ho aggiunto la relazione HAS-MANY verso la tabella pivot e ho creato con gii un model per quella tabella

La action save nel controller dei dipendenti è stata così modificata:




public function actionCreate()

	{

		$model=new Dipendenti;

                

                // Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


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

		{

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

			if($model->save()){

                            $mansioni = explode(',', $_POST['elencoIdMansioni']);

                                foreach ($mansioni as $mansione) { 

                                    $mansioniDipendente = new DipendentiMansioni;

                                    $mansioniDipendente->dipendenti_dipendenti_id = $model->dipendenti_id;

                                    $mansioniDipendente->mansioni_mansioni_id = $mansione;

                                    if (!$mansioniDipendente->save()) print_r($mansioniDipendente->errors);

                                }

				$this->redirect(array('view','id'=>$model->dipendenti_id,'ppp'=>$mansionielenco));

                        }

		}


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

			'model'=>$model,

		));

	}