7
7
8
8
namespace cebe \yii2openapi \lib ;
9
9
10
- use cebe \yii2openapi \lib \Config ;
11
- use cebe \yii2openapi \lib \CustomSpecAttr ;
12
10
use cebe \yii2openapi \lib \exceptions \InvalidDefinitionException ;
13
11
use cebe \yii2openapi \lib \items \Attribute ;
14
12
use cebe \yii2openapi \lib \items \AttributeRelation ;
22
20
use Yii ;
23
21
use yii \helpers \Inflector ;
24
22
use yii \helpers \StringHelper ;
25
- use yii \helpers \VarDumper ;
26
23
use function explode ;
27
24
use function strpos ;
28
25
use function strtolower ;
@@ -268,7 +265,7 @@ protected function resolveProperty(
268
265
269
266
$ relation = Yii::createObject (
270
267
AttributeRelation::class,
271
- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
268
+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
272
269
)
273
270
->asHasOne ([$ fkProperty ->getName () => $ attribute ->columnName ]);
274
271
$ relation ->onUpdateFkConstraint = $ property ->onUpdateFkConstraint ;
@@ -319,7 +316,7 @@ protected function resolveProperty(
319
316
$ this ->relations [$ property ->getName ()] =
320
317
Yii::createObject (
321
318
AttributeRelation::class,
322
- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
319
+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
323
320
)
324
321
->asHasMany ([$ fkProperty ->getName () => $ fkProperty ->getName ()])->asSelfReference ();
325
322
return ;
@@ -328,7 +325,7 @@ protected function resolveProperty(
328
325
$ this ->relations [$ property ->getName ()] =
329
326
Yii::createObject (
330
327
AttributeRelation::class,
331
- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
328
+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
332
329
)
333
330
->asHasMany ([$ foreignPk => $ this ->componentSchema ->getPkName ()]);
334
331
return ;
@@ -347,7 +344,7 @@ protected function resolveProperty(
347
344
$ this ->relations [$ property ->getName ()] =
348
345
Yii::createObject (
349
346
AttributeRelation::class,
350
- [$ property ->getName (), $ relatedTableName , $ relatedClassName ]
347
+ [static :: relationName ( $ property ->getName (), $ property -> fkColName ), $ relatedTableName , $ relatedClassName ]
351
348
)
352
349
->asHasMany ([Inflector::camel2id ($ this ->schemaName , '_ ' ) . '_id ' => $ this ->componentSchema ->getPkName ()]);
353
350
return ;
@@ -498,4 +495,14 @@ protected function resolvePropertyRef(PropertySchema $property, Attribute $attri
498
495
$ this ->attributes [$ property ->getName ()] =
499
496
$ attribute ->setFakerStub ($ this ->guessFakerStub ($ attribute , $ fkProperty ));
500
497
}
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
+ }
501
508
}
0 commit comments