public function relationship($class, $type, $name, array $config = array())
{
$primary = $class::meta('key');
if (is_array($primary)) {
$key = array_combine($primary, $primary);
} elseif ($type === 'hasMany' || $type === 'hasOne') {
$secondary = Inflector::underscore(Inflector::singularize($class::meta('name')));
$key = array($primary => "{$secondary}_id");
} else {
$key = Inflector::underscore(Inflector::singularize($name)) . '_id';
}
$from = $class;
$fieldName = $this->relationFieldName($type, $name);
$config += compact('type', 'name', 'key', 'from', 'fieldName');
return $this->_instance('relationship', $config);
}