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 | 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 | 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 | 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 | +} | ... | ... |