/** */ public function actionPopulateclassdivisions() { ClassDivision::deleteAll(); $classes = AClass::find()->all(); $groups = []; foreach ($classes as $class) { $key = join('|', [$class->room_id, $class->day_id, $class->type_id, $class->frequency_id, $class->start_time]); //echo $key . ': ' . $class->fullName . PHP_EOL; if (!isset($groups[$key])) { $groups[$key] = []; } $groups[$key][] = $class; } foreach ($groups as $key => $group) { $classId = null; foreach ($group as $class) { // use the ID of the first class in the group for all of them if (null === $classId) { $classId = $class->id; } $cd = new ClassDivision(); $cd->class_id = $classId; $cd->division_id = $class->division_id; if (!$cd->save()) { echo $key . ' failed to save' . PHP_EOL; } } } }
/** * @return \yii\db\ActiveQuery */ public function getClassDivisions() { return $this->hasMany(ClassDivision::className(), ['division_id' => 'id']); }