Как создать модель в Yii, ориентируясь на заданные параметры?

Задача такая:
Есть параметры таблиц в БД (их названия, названия столбцов в них), записанные в такой виде
//  ...
'params'=>array(
     'tbl_profiles'=>array(
          'tbl_name'=>'accounts',
          'tbl_fields'=>array(
               'username'=>'nickname',
               'password'=>'key',
               // ...
          )
     )
)
// ....

На основании этих параметров, необходимо создать модель.
class Profiles extends CActiveRecord {
	extract(Yii::app()->params[tbl_profiles][tbl_fields]);
	public // что тут?
	public // и тут?
	// ...

	public function tableName() {
		return Yii::app()->params[tbl_profiles][tbl_name];
	}
}
  • Вопрос задан
  • 2839 просмотров
Решения вопроса 1
AMar4enko
@AMar4enko
Вам не нужно описывать структуру таблицы в ActiveRecord, доступ к полям таблицы в нем осуществляется через магические методы, основанные на использовании метаданных таблицы.
Вы просто говорите, что эта модель связана с таблицей, и $model->column = $value; сразу будет работать, если в таблице есть поле column.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
cbone
@cbone
Серверная инфраструктура
Попробуйте сгенерировать модель при помощи Gii и по аналогии создавайте свою модель.
Ответ написан
Комментировать
@Dialog
Я недавно делал проксирование EAV в CModel и делал дальнейшую валидацию. Реализация проста, есть класс наследованный от CModel, есть protected $data = array(), в конструкторе мы записываем в наше свойство данные и пишем магический __get и __set, которые будут работать с $data.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы