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 ;
@@ -268,7 +265,7 @@ protected function resolveProperty(
268265
269266 $ relation = Yii::createObject (
270267 AttributeRelation::class,
271- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
268+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
272269 )
273270 ->asHasOne ([$ fkProperty ->getName () => $ attribute ->columnName ]);
274271 $ relation ->onUpdateFkConstraint = $ property ->onUpdateFkConstraint ;
@@ -319,7 +316,7 @@ protected function resolveProperty(
319316 $ this ->relations [$ property ->getName ()] =
320317 Yii::createObject (
321318 AttributeRelation::class,
322- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
319+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
323320 )
324321 ->asHasMany ([$ fkProperty ->getName () => $ fkProperty ->getName ()])->asSelfReference ();
325322 return ;
@@ -328,7 +325,7 @@ protected function resolveProperty(
328325 $ this ->relations [$ property ->getName ()] =
329326 Yii::createObject (
330327 AttributeRelation::class,
331- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
328+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
332329 )
333330 ->asHasMany ([$ foreignPk => $ this ->componentSchema ->getPkName ()]);
334331 return ;
@@ -347,7 +344,7 @@ protected function resolveProperty(
347344 $ this ->relations [$ property ->getName ()] =
348345 Yii::createObject (
349346 AttributeRelation::class,
350- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
347+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
351348 )
352349 ->asHasMany ([Inflector::camel2id ($ this ->schemaName , '_ ' ) . '_id ' => $ this ->componentSchema ->getPkName ()]);
353350 return ;
@@ -498,4 +495,14 @@ protected function resolvePropertyRef(PropertySchema $property, Attribute $attri
498495 $ this ->attributes [$ property ->getName ()] =
499496 $ attribute ->setFakerStub ($ this ->guessFakerStub ($ attribute , $ fkProperty ));
500497 }
498+
499+ public static function relationName (string $ propertyName , ?string $ fkColumnName ): string
500+ {
501+ $ fkColumnName = (string ) $ fkColumnName ;
502+ $ relationName = $ propertyName ;
503+ if (!str_contains ($ fkColumnName , '_ ' )) {
504+ $ relationName = strtolower ($ fkColumnName ) === strtolower ($ relationName ) ? $ relationName . 'Rel ' : $ relationName ;
505+ }
506+ return $ relationName ;
507+ }
501508}
0 commit comments