Skip to content

Commit 0430551

Browse files
committed
Fix this issue and failing tests
1 parent 2db7968 commit 0430551

File tree

11 files changed

+139
-9
lines changed

11 files changed

+139
-9
lines changed

src/lib/migrations/BaseMigrationBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public function buildJunction(ManyToManyRelation $relation):MigrationModel
101101
continue;
102102
}
103103
$this->migration
104-
->addUpCode($this->recordBuilder->addFk($fkName, $tableAlias, $fkCol, $refTable, $refCol))
104+
->addUpCode($this->recordBuilder->addFk($fkName, $tableAlias, $fkCol, $refTable, $refCol, 'CASCADE'))
105105
->addDownCode($this->recordBuilder->dropFk($fkName, $tableAlias));
106106
$this->migration->dependencies[] = $refTable;
107107
}

tests/specs/blog_v2/migrations_maria_db/m200000_000002_create_table_posts2tags.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ public function up()
1212
'tag_id' => $this->bigInteger()->notNull(),
1313
]);
1414
$this->addPrimaryKey('pk_post_id_tag_id', '{{%posts2tags}}', 'post_id,tag_id');
15-
$this->addForeignKey('fk_posts2tags_post_id_v2_posts_id', '{{%posts2tags}}', 'post_id', '{{%v2_posts}}', 'id');
16-
$this->addForeignKey('fk_posts2tags_tag_id_v2_tags_id', '{{%posts2tags}}', 'tag_id', '{{%v2_tags}}', 'id');
15+
$this->addForeignKey('fk_posts2tags_post_id_v2_posts_id', '{{%posts2tags}}', 'post_id', '{{%v2_posts}}', 'id', 'CASCADE');
16+
$this->addForeignKey('fk_posts2tags_tag_id_v2_tags_id', '{{%posts2tags}}', 'tag_id', '{{%v2_tags}}', 'id', 'CASCADE');
1717
}
1818

1919
public function down()

tests/specs/blog_v2/migrations_mysql_db/m200000_000002_create_table_posts2tags.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ public function up()
1212
'tag_id' => $this->bigInteger()->notNull(),
1313
]);
1414
$this->addPrimaryKey('pk_post_id_tag_id', '{{%posts2tags}}', 'post_id,tag_id');
15-
$this->addForeignKey('fk_posts2tags_post_id_v2_posts_id', '{{%posts2tags}}', 'post_id', '{{%v2_posts}}', 'id');
16-
$this->addForeignKey('fk_posts2tags_tag_id_v2_tags_id', '{{%posts2tags}}', 'tag_id', '{{%v2_tags}}', 'id');
15+
$this->addForeignKey('fk_posts2tags_post_id_v2_posts_id', '{{%posts2tags}}', 'post_id', '{{%v2_posts}}', 'id', 'CASCADE');
16+
$this->addForeignKey('fk_posts2tags_tag_id_v2_tags_id', '{{%posts2tags}}', 'tag_id', '{{%v2_tags}}', 'id', 'CASCADE');
1717
}
1818

1919
public function down()

tests/specs/blog_v2/migrations_pgsql_db/m200000_000002_create_table_posts2tags.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ public function safeUp()
1212
'tag_id' => $this->bigInteger()->notNull(),
1313
]);
1414
$this->addPrimaryKey('pk_post_id_tag_id', '{{%posts2tags}}', 'post_id,tag_id');
15-
$this->addForeignKey('fk_posts2tags_post_id_v2_posts_id', '{{%posts2tags}}', 'post_id', '{{%v2_posts}}', 'id');
16-
$this->addForeignKey('fk_posts2tags_tag_id_v2_tags_id', '{{%posts2tags}}', 'tag_id', '{{%v2_tags}}', 'id');
15+
$this->addForeignKey('fk_posts2tags_post_id_v2_posts_id', '{{%posts2tags}}', 'post_id', '{{%v2_posts}}', 'id', 'CASCADE');
16+
$this->addForeignKey('fk_posts2tags_tag_id_v2_tags_id', '{{%posts2tags}}', 'tag_id', '{{%v2_tags}}', 'id', 'CASCADE');
1717
}
1818

1919
public function safeDown()
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
return [
4+
'openApiPath' => '@specs/issue_fix/53_bug_inversed_reference_require_cascade/index.yml',
5+
'generateUrls' => false,
6+
'generateModels' => false,
7+
'excludeModels' => [
8+
'Error',
9+
],
10+
'generateControllers' => false,
11+
'generateMigrations' => true,
12+
'generateModelFaker' => false, // `generateModels` must be `true` in order to use `generateModelFaker` as `true`
13+
];
14+
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
openapi: 3.0.3
2+
3+
info:
4+
title: '53_bug_inversed_reference_require_cascade'
5+
version: 1.0.0
6+
7+
components:
8+
schemas:
9+
Document:
10+
title: Document
11+
properties:
12+
id:
13+
type: integer
14+
labels:
15+
type: array
16+
readOnly: true
17+
description: Inversed reference for detect junction table documents2labels
18+
items:
19+
$ref: '#/components/schemas/Label'
20+
21+
Label:
22+
title: Label
23+
properties:
24+
id:
25+
type: integer
26+
documents:
27+
type: array
28+
readOnly: true
29+
description: Inversed reference for detect junction table documents2labels
30+
items:
31+
$ref: '#/components/schemas/Document'
32+
33+
paths:
34+
'/':
35+
get:
36+
responses:
37+
'200':
38+
description: OK
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
/**
4+
* Table for Document
5+
*/
6+
class m200000_000000_create_table_documents extends \yii\db\Migration
7+
{
8+
public function up()
9+
{
10+
$this->createTable('{{%documents}}', [
11+
'id' => $this->primaryKey(),
12+
]);
13+
}
14+
15+
public function down()
16+
{
17+
$this->dropTable('{{%documents}}');
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
/**
4+
* Table for Label
5+
*/
6+
class m200000_000001_create_table_labels extends \yii\db\Migration
7+
{
8+
public function up()
9+
{
10+
$this->createTable('{{%labels}}', [
11+
'id' => $this->primaryKey(),
12+
]);
13+
}
14+
15+
public function down()
16+
{
17+
$this->dropTable('{{%labels}}');
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
/**
4+
* Table for Documents2Labels
5+
*/
6+
class m200000_000002_create_table_documents2labels extends \yii\db\Migration
7+
{
8+
public function up()
9+
{
10+
$this->createTable('{{%documents2labels}}', [
11+
'document_id' => $this->integer()->notNull(),
12+
'label_id' => $this->integer()->notNull(),
13+
]);
14+
$this->addPrimaryKey('pk_document_id_label_id', '{{%documents2labels}}', 'document_id,label_id');
15+
$this->addForeignKey('fk_documents2labels_document_id_documents_id', '{{%documents2labels}}', 'document_id', '{{%documents}}', 'id', 'CASCADE');
16+
$this->addForeignKey('fk_documents2labels_label_id_labels_id', '{{%documents2labels}}', 'label_id', '{{%labels}}', 'id', 'CASCADE');
17+
}
18+
19+
public function down()
20+
{
21+
$this->dropForeignKey('fk_documents2labels_label_id_labels_id', '{{%documents2labels}}');
22+
$this->dropForeignKey('fk_documents2labels_document_id_documents_id', '{{%documents2labels}}');
23+
$this->dropPrimaryKey('pk_document_id_label_id', '{{%documents2labels}}');
24+
$this->dropTable('{{%documents2labels}}');
25+
}
26+
}

tests/specs/many2many/migrations/m200000_000004_create_table_posts2tags.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ public function up()
1212
'tag_id' => $this->bigInteger()->notNull(),
1313
]);
1414
$this->addPrimaryKey('pk_post_id_tag_id', '{{%posts2tags}}', 'post_id,tag_id');
15-
$this->addForeignKey('fk_posts2tags_post_id_posts_id', '{{%posts2tags}}', 'post_id', '{{%posts}}', 'id');
16-
$this->addForeignKey('fk_posts2tags_tag_id_tags_id', '{{%posts2tags}}', 'tag_id', '{{%tags}}', 'id');
15+
$this->addForeignKey('fk_posts2tags_post_id_posts_id', '{{%posts2tags}}', 'post_id', '{{%posts}}', 'id', 'CASCADE');
16+
$this->addForeignKey('fk_posts2tags_tag_id_tags_id', '{{%posts2tags}}', 'tag_id', '{{%tags}}', 'id', 'CASCADE');
1717
}
1818

1919
public function down()

tests/unit/IssueFixTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,4 +360,18 @@ public function test158BugGiiapiGeneratedRulesEnumWithTrim()
360360
]);
361361
$this->checkFiles($actualFiles, $expectedFiles);
362362
}
363+
364+
// https://github.com/php-openapi/yii2-openapi/issues/53
365+
public function test53BugInversedReferenceRequireCascade()
366+
{
367+
$testFile = Yii::getAlias("@specs/issue_fix/53_bug_inversed_reference_require_cascade/index.php");
368+
$this->runGenerator($testFile);
369+
$actualFiles = FileHelper::findFiles(Yii::getAlias('@app'), [
370+
'recursive' => true,
371+
]);
372+
$expectedFiles = FileHelper::findFiles(Yii::getAlias("@specs/issue_fix/53_bug_inversed_reference_require_cascade/mysql"), [
373+
'recursive' => true,
374+
]);
375+
$this->checkFiles($actualFiles, $expectedFiles);
376+
}
363377
}

0 commit comments

Comments
 (0)