protected function generateRelationName($tableName, $fkName, $multiple)
{
if (strcasecmp(substr($fkName, -2), 'id') === 0 && strcasecmp($fkName, 'id')) {
$relationName = rtrim(substr($fkName, 0, -2), '_');
} else {
$relationName = $fkName;
}
$relationName[0] = strtolower($relationName);
$rawName = $relationName;
if ($multiple) {
$relationName = $this->pluralize($relationName);
}
$table = Yii::app()->{$this->connectionId}->schema->getTable($tableName);
$i = 0;
while (isset($table->columns[$relationName])) {
$relationName = $rawName . $i++;
}
$names = preg_split('/_+/', $relationName, -1, PREG_SPLIT_NO_EMPTY);
if (empty($names)) {
return $relationName;
}
// unlikely
for ($name = $names[0], $i = 1; $i < count($names); ++$i) {
$name .= ucfirst($names[$i]);
}
return $name;
}