/** * @param string|null $q * @param int|null $id * @param int|null $country_id * * @return array */ public function actionRegions($q = null, $id = null, $country_id = null) { if ($id) { return ['results' => ['id' => (int) $id, 'text' => Region::findOne((int) $id)->name]]; } $data = (new Query())->select('id, name AS text')->from(Region::tableName())->limit(50); if ($q) { $data->where(['or', ['like', 'name', $q . '%', false], ['like', 'name_ascii', $q . '%', false]]); } if ($country_id) { $data->andWhere(['country_id' => (int) $country_id]); } return ['results' => array_values($data->createCommand()->queryAll())]; }
/** * @return \yii\db\ActiveQuery */ public function getRegions() { return $this->hasMany(Region::className(), ['country_id' => 'id']); }
/** * @return \yii\db\ActiveQuery */ public function getRegion() { return $this->hasOne(Region::className(), ['id' => 'region_id']); }