/** * Stores any many-to-many associations or any one-to-many records that have been flagged for association * * @internal * * @param string $class The class to store the related records for * @param array &$values The current values for the main record being stored * @param array &$related_records The related records array * @param boolean $force_cascade This flag will be passed to the fActiveRecord::delete() method on related records that are being deleted * @return void */ public static function store($class, &$values, &$related_records, $force_cascade) { $table = fORM::tablize($class); $schema = fORMSchema::retrieve($class); foreach ($related_records as $related_table => $relationships) { foreach ($relationships as $route => $related_info) { if (!$related_info['associate']) { continue; } $relationship = fORMSchema::getRoute($schema, $table, $related_table, $route); if (isset($relationship['join_table'])) { fORMRelated::storeManyToMany($class, $values, $relationship, $related_info); } else { $related_class = fORM::classize($related_table); $related_class = fORM::getRelatedClass($class, $related_class); fORMRelated::storeOneToStar($class, $values, $related_records, $related_class, $route, $force_cascade); } } } }