Пример: Есть таблица названиями авто. id(int), фирма изготовитель(int), название авто(varchar).
В поле фирмы изготовителя может быть от 4х до 10 значений. Создавать отдельную таблицу с названиями не имеет смысла, т.к. лишние запросы к базе(и примите как факт! Это только пример. Мне реально не нужно создавать отдельную таблицу.)
Где и в каком формате хранить эти данные.
Моё решение:
Хранить в массиве однозначно.
В модели хранить неправильно, т.к. при каждом создании объекта модели - будет создаваться и свойство в виде полного массива данных, что не есть гуд.
Хранить в контроллере - вполне пойдет. Массив ассоциативный, маленький и простой. Объявить его как protected и через гетер сделать доступным только для чтения.
Второй вопрос.
Если мы решились хранить данные в контроллере в виде массива. Правильно ли получать конкретное значение таким вот образом??
Код: Выделить всё
protected $tip = array(
'1' => 'Частное',
'2' => 'Юр. лицо',
'3' => 'Инопланетяне',
'4' => 'Рэпперы',
);
public function getTip($id = NULL) {
if (isset($id)) {
return $this->tip["$id"];
} else {
return $this->tip;
}
}
Лично я столкнулся с тем, что не могу вывести нужное мне значение в CGridView.
Код: Выделить всё
array(
'name' => 'tip',
'value' => '$data->tip', // Как мне сюда выводить не поле из базы, а ту самую вторую переменную из PHP?
'filter' => $this->tip,
),