77
88namespace cebe \yii2openapi \lib ;
99
10- use cebe \yii2openapi \lib \Config ;
11- use cebe \yii2openapi \lib \CustomSpecAttr ;
1210use cebe \yii2openapi \lib \exceptions \InvalidDefinitionException ;
1311use cebe \yii2openapi \lib \items \Attribute ;
1412use cebe \yii2openapi \lib \items \AttributeRelation ;
2220use Yii ;
2321use yii \helpers \Inflector ;
2422use yii \helpers \StringHelper ;
25- use yii \helpers \VarDumper ;
2623use function explode ;
2724use function strpos ;
2825use function strtolower ;
@@ -266,7 +263,7 @@ protected function resolveProperty(
266263
267264 $ relation = Yii::createObject (
268265 AttributeRelation::class,
269- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
266+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
270267 )
271268 ->asHasOne ([$ fkProperty ->getName () => $ attribute ->columnName ]);
272269 $ relation ->onUpdateFkConstraint = $ property ->onUpdateFkConstraint ;
@@ -317,7 +314,7 @@ protected function resolveProperty(
317314 $ this ->relations [$ property ->getName ()] =
318315 Yii::createObject (
319316 AttributeRelation::class,
320- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
317+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
321318 )
322319 ->asHasMany ([$ fkProperty ->getName () => $ fkProperty ->getName ()])->asSelfReference ();
323320 return ;
@@ -326,7 +323,7 @@ protected function resolveProperty(
326323 $ this ->relations [$ property ->getName ()] =
327324 Yii::createObject (
328325 AttributeRelation::class,
329- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
326+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
330327 )
331328 ->asHasMany ([$ foreignPk => $ this ->schema ->getPkName ()]);
332329 return ;
@@ -345,7 +342,7 @@ protected function resolveProperty(
345342 $ this ->relations [$ property ->getName ()] =
346343 Yii::createObject (
347344 AttributeRelation::class,
348- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
345+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
349346 )
350347 ->asHasMany ([Inflector::camel2id ($ this ->schemaName , '_ ' ) . '_id ' => $ this ->schema ->getPkName ()]);
351348 return ;
@@ -492,4 +489,13 @@ protected function resolvePropertyRef(PropertySchema $property, Attribute $attri
492489 $ this ->attributes [$ property ->getName ()] =
493490 $ attribute ->setFakerStub ($ this ->guessFakerStub ($ attribute , $ fkProperty ));
494491 }
492+
493+ public static function relationName (string $ propertyName , ?string $ fkColumnName ): string
494+ {
495+ $ relationName = $ propertyName ;
496+ if (!str_contains ($ fkColumnName , '_ ' )) {
497+ $ relationName = strtolower ($ fkColumnName ) === strtolower ($ relationName ) ? $ relationName . 'Rel ' : $ relationName ;
498+ }
499+ return $ relationName ;
500+ }
495501}
0 commit comments