/** * Creates a belongs to relationship (many to one). * * @param KConfig $config Relationship options * * @return AnDomainRelationshipManytoone */ protected static function _belongsTo(KConfig $config) { $description = $config['description']; $config['child'] = $description->getEntityIdentifier(); $config->append(array('type_column' => KInflector::underscore($config->name) . '_type', 'child_column' => KInflector::underscore($config->name) . '_id')); if (is_string($config->type_column)) { $config->type_column = $description->getRepository()->getResources()->getColumn($config->type_column); } if (is_string($config->child_column)) { $config->child_column = $description->getRepository()->getResources()->getColumn($config->child_column); } if (!$config->child_column) { throw new AnDomainPropertyException('The ' . $config->name . ' belongs to relationship is missing a child column'); } //if the relationship is not polymorphic the we need to set //a parent if none is set if (!$config->polymorphic && !$config['parent']) { $parent = clone $description->getEntityIdentifier(); $parent->name = $config['name']; $config->append(array('parent' => $parent)); } if (is_string($config->parent) && strpos($config->parent, '.') === false) { $parent = clone $description->getEntityIdentifier(); $parent->name = $config->parent; $config->parent = $parent; } $relationship = AnDomainPropertyAbstract::getInstance('relationship.manytoone', $config); if ($config->inverse) { if (is_bool($config->inverse)) { $config['inverse'] = array(); } $relationship->setInverse($config->inverse); } return $relationship; }