lithium\data\model\Relationship::_keys()
Generates an array of relationship key pairs, where the keys are fields on the origin model, and values are fields on the lniked model.
Source
protected function _keys($keys) {
if (!$keys) {
return [];
}
$config = $this->_config;
$hasType = ($config['type'] === 'hasOne' || $config['type'] === 'hasMany');
$related = Libraries::locate('models', $config[$hasType ? 'from' : 'to']);
if (!class_exists($related)) {
throw new ClassNotFoundException("Related model class '{$related}' not found.");
}
if (!$related::key()) {
throw new ConfigException("No key defined for related model `{$related}`.");
}
$keys = (array) $keys;
$related = (array) $related::key();
if (count($keys) !== count($related)) {
$msg = "Unmatched keys in relationship `{$config['name']}` between models ";
$msg .= "`{$config['from']}` and `{$config['to']}`.";
throw new ConfigException($msg);
}
return $hasType ? array_combine($related, $keys) : array_combine($keys, $related);
}