Commit 8e73da4f4ad91b7bca97bc302547d024bcce5eca
1 parent
9cf612c4
product models and migrations
Showing
5 changed files
with
304 additions
and
1 deletions
Show diff stats
common/messages/ru/app.php
@@ -390,7 +390,7 @@ return [ | @@ -390,7 +390,7 @@ return [ | ||
390 | 'section-question__title'=> 'ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ', | 390 | 'section-question__title'=> 'ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ', |
391 | 'Номінальна потужність мережевого інвертора'=>'Номінальна потужність мережевого інвертора', | 391 | 'Номінальна потужність мережевого інвертора'=>'Номінальна потужність мережевого інвертора', |
392 | 'Встановлена потужність фотоелектричних модулів'=>'Встановлена потужність фотоелектричних модулів', | 392 | 'Встановлена потужність фотоелектричних модулів'=>'Встановлена потужність фотоелектричних модулів', |
393 | - 'Вартість системи "під ключ"'=>'Вартість системи "під ключ"', | 393 | + 'Вартість системи "під ключ"'=>'Стоимость системы "под ключ"', |
394 | 394 | ||
395 | 395 | ||
396 | 396 |
1 | +<?php | ||
2 | + | ||
3 | +namespace common\models; | ||
4 | + | ||
5 | +use artbox\core\behaviors\LanguageBehavior; | ||
6 | +use artbox\core\models\Image; | ||
7 | +use yii\db\ActiveRecord; | ||
8 | + | ||
9 | +class Product extends ActiveRecord | ||
10 | +{ | ||
11 | + /** | ||
12 | + * @inheritdoc | ||
13 | + */ | ||
14 | + public static function tableName() | ||
15 | + { | ||
16 | + return 'product'; | ||
17 | + } | ||
18 | + | ||
19 | + public function behaviors() | ||
20 | + { | ||
21 | + return [ | ||
22 | + 'language' => [ | ||
23 | + 'class' => LanguageBehavior::className(), | ||
24 | + ], | ||
25 | + ]; | ||
26 | + } | ||
27 | + | ||
28 | + public function rules() | ||
29 | + { | ||
30 | + return [ | ||
31 | +// [ | ||
32 | +// [ | ||
33 | +// 'image', | ||
34 | +// ], | ||
35 | +// 'required', | ||
36 | +// ], | ||
37 | + [ | ||
38 | + [ | ||
39 | + 'status', | ||
40 | + ], | ||
41 | + 'boolean', | ||
42 | + ], | ||
43 | + [ | ||
44 | + [ | ||
45 | + 'sku', | ||
46 | + ], | ||
47 | + 'string', | ||
48 | + 'max' => 255, | ||
49 | + ], | ||
50 | + [ | ||
51 | + [ | ||
52 | + 'sort', | ||
53 | + 'image_id', | ||
54 | + ], | ||
55 | + 'integer', | ||
56 | + ], | ||
57 | + [ | ||
58 | + ['image_id'], | ||
59 | + 'exist', | ||
60 | + 'skipOnError' => true, | ||
61 | + 'targetClass' => Image::className(), | ||
62 | + 'targetAttribute' => ['image_id' => 'id'], | ||
63 | + ], | ||
64 | + ]; | ||
65 | + } | ||
66 | + | ||
67 | + /** | ||
68 | + * @return \yii\db\ActiveQuery | ||
69 | + */ | ||
70 | + public function getImage() | ||
71 | + { | ||
72 | + return $this->hasOne(Image::className(), ['id' => 'image_id']); | ||
73 | + } | ||
74 | +} | ||
0 | \ No newline at end of file | 75 | \ No newline at end of file |
1 | +<?php | ||
2 | + | ||
3 | +namespace common\models; | ||
4 | + | ||
5 | +use artbox\core\models\Language; | ||
6 | +use yii\db\ActiveRecord; | ||
7 | + | ||
8 | +class ProductLang extends ActiveRecord | ||
9 | +{ | ||
10 | + /** | ||
11 | + * @inheritdoc | ||
12 | + */ | ||
13 | + public static function tableName() | ||
14 | + { | ||
15 | + return 'product_lang'; | ||
16 | + } | ||
17 | + | ||
18 | + /** | ||
19 | + * @inheritdoc | ||
20 | + */ | ||
21 | + public function rules() | ||
22 | + { | ||
23 | + return [ | ||
24 | + [ | ||
25 | + [ | ||
26 | + 'product_id', | ||
27 | + 'language_id', | ||
28 | + 'title', | ||
29 | + ], | ||
30 | + 'required', | ||
31 | + ], | ||
32 | + [ | ||
33 | + [ | ||
34 | + 'product_id', | ||
35 | + 'language_id', | ||
36 | + ], | ||
37 | + 'integer', | ||
38 | + ], | ||
39 | + [ | ||
40 | + [ | ||
41 | + 'title', | ||
42 | + ], | ||
43 | + 'string', | ||
44 | + 'max' => 255, | ||
45 | + ], | ||
46 | + [ | ||
47 | + [ | ||
48 | + 'description', | ||
49 | + ], | ||
50 | + 'string', | ||
51 | + ], | ||
52 | + [ | ||
53 | + [ 'language_id' ], | ||
54 | + 'exist', | ||
55 | + 'skipOnError' => true, | ||
56 | + 'targetClass' => Language::className(), | ||
57 | + 'targetAttribute' => [ 'language_id' => 'id' ], | ||
58 | + ], | ||
59 | + [ | ||
60 | + [ 'tile_id' ], | ||
61 | + 'exist', | ||
62 | + 'skipOnError' => true, | ||
63 | + 'targetClass' => Product::className(), | ||
64 | + 'targetAttribute' => [ 'product_id' => 'id' ], | ||
65 | + ], | ||
66 | + ]; | ||
67 | + } | ||
68 | + | ||
69 | + | ||
70 | + /** | ||
71 | + * @return \yii\db\ActiveQuery | ||
72 | + */ | ||
73 | + public function getLanguage() | ||
74 | + { | ||
75 | + return $this->hasOne(Language::className(), [ 'id' => 'language_id' ]); | ||
76 | + } | ||
77 | + | ||
78 | + /** | ||
79 | + * @return \yii\db\ActiveQuery | ||
80 | + */ | ||
81 | + public function getProduct() | ||
82 | + { | ||
83 | + return $this->hasOne(Product::className(), [ 'id' => 'product_id' ]); | ||
84 | + } | ||
85 | +} | ||
0 | \ No newline at end of file | 86 | \ No newline at end of file |
console/migrations/m220412_144550_create_product_table.php
0 → 100644
1 | +<?php | ||
2 | + | ||
3 | +use yii\db\Migration; | ||
4 | + | ||
5 | +/** | ||
6 | + * Handles the creation of table `product`. | ||
7 | + */ | ||
8 | +class m220412_144550_create_product_table extends Migration | ||
9 | +{ | ||
10 | + /** | ||
11 | + * @inheritdoc | ||
12 | + */ | ||
13 | + public function up() | ||
14 | + { | ||
15 | + $this->createTable('product', [ | ||
16 | + 'id' => $this->primaryKey(), | ||
17 | + 'status' => $this->boolean(), | ||
18 | + 'sort' => $this->smallInteger(), | ||
19 | + 'sku' =>$this->string(255), | ||
20 | + 'image_id' => $this->integer(), | ||
21 | + ]); | ||
22 | + $this->addForeignKey( | ||
23 | + 'fk-product-image_id', | ||
24 | + 'product', | ||
25 | + 'image_id', | ||
26 | + 'ImageManager', | ||
27 | + 'id', | ||
28 | + 'CASCADE' | ||
29 | + ); | ||
30 | + } | ||
31 | + | ||
32 | + /** | ||
33 | + * @inheritdoc | ||
34 | + */ | ||
35 | + public function down() | ||
36 | + { | ||
37 | + $this->dropForeignKey( | ||
38 | + 'fk-product-image_id', | ||
39 | + 'product' | ||
40 | + ); | ||
41 | + $this->dropTable('product'); | ||
42 | + } | ||
43 | +} |
console/migrations/m220412_144602_create_product_lang_table.php
0 → 100644
1 | +<?php | ||
2 | + | ||
3 | +use yii\db\Migration; | ||
4 | + | ||
5 | +/** | ||
6 | + * Handles the creation of table `product_lang`. | ||
7 | + */ | ||
8 | +class m220412_144602_create_product_lang_table extends Migration | ||
9 | +{ | ||
10 | + /** | ||
11 | + * @inheritdoc | ||
12 | + */ | ||
13 | + public function up() | ||
14 | + { | ||
15 | + $this->createTable('product_lang', [ | ||
16 | + 'product_id' => $this->integer()->notNull(), | ||
17 | + 'language_id' => $this->smallInteger()->notNull(), | ||
18 | + 'description' => $this->text(), | ||
19 | + 'title' => $this->string(255), | ||
20 | + ]); | ||
21 | + // creates index for column `product_id` | ||
22 | + $this->createIndex( | ||
23 | + 'idx-product_lang-product_id', | ||
24 | + 'product_lang', | ||
25 | + 'product_id' | ||
26 | + ); | ||
27 | + | ||
28 | + // add foreign key for table `object` | ||
29 | + $this->addForeignKey( | ||
30 | + 'fk-product_lang-product_id', | ||
31 | + 'product_lang', | ||
32 | + 'product_id', | ||
33 | + 'product', | ||
34 | + 'id', | ||
35 | + 'CASCADE' | ||
36 | + ); | ||
37 | + | ||
38 | + // creates index for column `language_id` | ||
39 | + $this->createIndex( | ||
40 | + 'idx-product_lang-language_id', | ||
41 | + 'product_lang', | ||
42 | + 'language_id' | ||
43 | + ); | ||
44 | + | ||
45 | + // add foreign key for table `language` | ||
46 | + $this->addForeignKey( | ||
47 | + 'fk-product_lang-language_id', | ||
48 | + 'product_lang', | ||
49 | + 'language_id', | ||
50 | + 'language', | ||
51 | + 'id', | ||
52 | + 'CASCADE' | ||
53 | + ); | ||
54 | + // add double primary key | ||
55 | + $this->addPrimaryKey( | ||
56 | + "pk-product_lang-product_id-language_id", | ||
57 | + "product_lang", | ||
58 | + [ | ||
59 | + "product_id", | ||
60 | + "language_id", | ||
61 | + ] | ||
62 | + ); | ||
63 | + } | ||
64 | + | ||
65 | + /** | ||
66 | + * @inheritdoc | ||
67 | + */ | ||
68 | + public function down() | ||
69 | + { | ||
70 | + // drop double primary key | ||
71 | + $this->dropPrimaryKey( | ||
72 | + "pk-product_lang-product_id-language_id", | ||
73 | + "product_lang" | ||
74 | + ); | ||
75 | + | ||
76 | + // drops foreign key for table `product` | ||
77 | + $this->dropForeignKey( | ||
78 | + 'fk-product_lang-product_id', | ||
79 | + 'product_lang' | ||
80 | + ); | ||
81 | + | ||
82 | + // drops index for column `product_id` | ||
83 | + $this->dropIndex( | ||
84 | + 'idx-product_lang-product_id', | ||
85 | + 'product_lang' | ||
86 | + ); | ||
87 | + | ||
88 | + // drops foreign key for table `language` | ||
89 | + $this->dropForeignKey( | ||
90 | + 'fk-product_lang-language_id', | ||
91 | + 'product_lang' | ||
92 | + ); | ||
93 | + | ||
94 | + // drops index for column `language_id` | ||
95 | + $this->dropIndex( | ||
96 | + 'idx-product_lang-language_id', | ||
97 | + 'product_lang' | ||
98 | + ); | ||
99 | + $this->dropTable('product_lang'); | ||
100 | + } | ||
101 | +} |