/** * @return \yii\db\ActiveQuery */ public function getCountry() { return $this->hasOne(ReceivedCountry::className(), ['code' => 'country_code']); }
public function actionCountryAlias() { $this->stdout('Generate alias: Country.' . PHP_EOL, Console::FG_GREEN); $language = ReceivedLanguage::find()->indexBy('id')->asArray()->all(); $country = ReceivedCountry::find()->indexBy('code')->all(); $translations = ReceivedCountryTranslation::find()->asArray()->all(); $translation = []; foreach ($translations as $value) { $alias = $this->translit($value['name']); if ($value['language_id'] == 3 || $value['language_id'] == 9) { $translation[$value['country_code']][$value['language_id']] = $alias; } else { $translation[$value['country_code']][$value['language_id']] = preg_replace('~[^a-z0-9_-]~i', '*', $alias); } } $count = count($country); Console::startProgress(0, $count); $count_ = 0; foreach ($country as $value) { $value->alias_de = $value->alias; $value->alias_en = $value->alias; $value['alias_zh-CN'] = $value->alias; $value->alias_tr = $value->alias; $value->alias_ru = $value->alias; $value->alias_fr = $value->alias; $value->alias_es = $value->alias; $value->alias_it = $value->alias; $value->alias_th = $value->alias; foreach ($translation[$value->code] as $key => $_value) { if ($_value != '') { switch ($language[$key]['code']) { case 'de': $value->alias_de = $_value; break; case 'en': $value->alias_en = $_value; break; // case 'zh-CN': // $value['alias_zh-CN'] = $_value; // break; // case 'zh-CN': // $value['alias_zh-CN'] = $_value; // break; case 'tr': $value->alias_tr = $_value; break; case 'ru': $value->alias_ru = $_value; break; case 'fr': $value->alias_fr = $_value; break; case 'es': $value->alias_es = $_value; break; case 'it': $value->alias_it = $_value; break; // case 'th': // $value->alias_th = $_value; // break; } } } if (!$value->save()) { print_r($value->attributes); print_r($value->errors); return Controller::EXIT_CODE_ERROR; } Console::updateProgress(++$count_, $count); } Console::endProgress(); return Controller::EXIT_CODE_NORMAL; }