/** * @return \yii\db\ActiveQuery */ public function getContact_groups() { return $this->hasMany(Contact_to_contact_group::className(), ['group_id' => 'id']); }
public function afterSave($insert, $changedAttributes) { $connection = \Yii::$app->db; $queryTuttiGruppi = $this->getContact_groups()->asArray()->all(); $arrayTuttiGruppi = ArrayHelper::map($queryTuttiGruppi, 'id', 'name'); // if not a new contact, delete all groups if (!$insert) { Contact_to_contact_group::deleteAll('contact_id = :id', [':id' => $this->id]); } $gruppiSelezionati = $this->gruppi; $gruppiScrittura = Contact_group::getGruppi(); // aggiunge i gruppi di cui fa parte il contatto e che non ho il permesso di modificare foreach ($arrayTuttiGruppi as $key => $value) { if (!array_key_exists($key, $gruppiScrittura)) { array_push($gruppiSelezionati, $key); } } $lenght = count($gruppiSelezionati); $contatti = array_fill(0, $lenght, $this->id); $gruppicontatti = array_map(null, $contatti, $gruppiSelezionati); $connection->createCommand()->batchInsert('contact_to_contact_group', ['contact_id', 'contact_group_id'], $gruppicontatti)->execute(); }