sfPropelData::loadMany2Many PHP Method

loadMany2Many() protected method

Loads many to many objects.
protected loadMany2Many ( BaseObject $obj, string $middleTableName, array $values )
$obj BaseObject A Propel object
$middleTableName string The middle table name
$values array An array of values
    protected function loadMany2Many($obj, $middleTableName, $values)
    {
        $middleTable = $this->dbMap->getTable($middleTableName);
        $middleClass = $middleTable->getPhpName();
        foreach ($middleTable->getColumns() as $column) {
            if ($column->isForeignKey() && constant(constant(get_class($obj) . '::PEER') . '::TABLE_NAME') != $column->getRelatedTableName()) {
                $relatedClass = $this->dbMap->getTable($column->getRelatedTableName())->getPhpName();
                break;
            }
        }
        if (!isset($relatedClass)) {
            throw new InvalidArgumentException(sprintf('Unable to find the many-to-many relationship for object "%s".', get_class($obj)));
        }
        $setter = 'set' . get_class($obj);
        $relatedSetter = 'set' . $relatedClass;
        foreach ($values as $value) {
            if (!isset($this->object_references[$relatedClass . '_' . $value])) {
                throw new InvalidArgumentException(sprintf('The object "%s" from class "%s" is not defined in your data file.', $value, $relatedClass));
            }
            $middle = new $middleClass();
            $middle->{$setter}($obj);
            $middle->{$relatedSetter}($this->object_references[$relatedClass . '_' . $value]);
            $middle->save();
        }
    }