Добавить новое поле в модель

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
bimply
Сообщения: 69
Зарегистрирован: 2012.08.13, 19:31

Добавить новое поле в модель

Сообщение bimply »

Иногда по структуре бд не всегда удается предусмотреть все необходимые поля в какой нибудь таблице. Поэтому добавляю их динамически через phpmyadmin.

Проблемы возникают когда на основе таблиц генерится модель при помощи gii. Новое поле никак не хочет добавляться setAttribues и совершенно не хочет сохраняться в бд. Куда только новое поле не добавлял, все равно приходится генерить заново на gii модель, восстанавливать код потом руками.
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Добавить новое поле в модель

Сообщение HQ0 »

Какой-нибудь валидатор стоит добавить на новое поле в rules() и всё должно работать.
Есть еще один крутой план: генерить модельку, наследовать и писать свой код уже в наследнике и работать только с ним. Базовую модель можно будет генерировать сколько угодно раз
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Добавить новое поле в модель

Сообщение maleks »

HQ0, против данного крутого плана разработчики специально предупреждают:
We often see people using the models generated by gii without change and just extend them to adjust some parts of it. This is not how it is ment to be used.
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: Добавить новое поле в модель

Сообщение yan »

maleks писал(а):HQ0, против данного крутого плана разработчики специально предупреждают:
We often see people using the models generated by gii without change and just extend them to adjust some parts of it. This is not how it is ment to be used.
это про вторую версии, хотя и в первой я не понимаю когда люди так делают
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Добавить новое поле в модель

Сообщение HQ0 »

Это ведь решает проблему, если модельку генерят по несколько раз за день? Остальные проблемы которые могут появиться надо решать когда они возникнут :)
Аватара пользователя
sluchainiyznak
Сообщения: 617
Зарегистрирован: 2013.05.19, 17:51
Откуда: ХМАО-Югра, г. Сургут
Контактная информация:

Re: Добавить новое поле в модель

Сообщение sluchainiyznak »

как вариант отнаследоваться от сгенерированной gii модельки и писать свой дополнительный код именно в наследнике, тогда в любой момент можно перегенерить основную модельку
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Добавить новое поле в модель

Сообщение HQ0 »

sluchainiyznak, какое интересное, свежее предложение. Спасибо, будем юзать ;)
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Добавить новое поле в модель

Сообщение maleks »

HQ0 писал(а):sluchainiyznak, какое интересное, свежее предложение. Спасибо, будем юзать ;)
:D
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Добавить новое поле в модель

Сообщение maleks »

yan писал(а): это про вторую версии, хотя и в первой я не понимаю когда люди так делают
между первой и второй тут диффик не большой. :)
bimply
Сообщения: 69
Зарегистрирован: 2012.08.13, 19:31

Re: Добавить новое поле в модель

Сообщение bimply »

А нельзя каким нибудь простым способом "научить" yii видеть дополнительные поля.
Они же все хранятся где то по идее
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: Добавить новое поле в модель

Сообщение yan »

bimply писал(а):А нельзя каким нибудь простым способом "научить" yii видеть дополнительные поля.
Они же все хранятся где то по идее
он и так их видит и с ними работает, а в модели для новых полей добавляют валидацию-пхпдок-релейшены-лейбы
bimply
Сообщения: 69
Зарегистрирован: 2012.08.13, 19:31

Re: Добавить новое поле в модель

Сообщение bimply »

yan писал(а):
bimply писал(а):А нельзя каким нибудь простым способом "научить" yii видеть дополнительные поля.
Они же все хранятся где то по идее
он и так их видит и с ними работает, а в модели для новых полей добавляют валидацию-пхпдок-релейшены-лейбы
Не работает setAttributes,если просто прописать поля в валидацию+лейблы
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: Добавить новое поле в модель

Сообщение yan »

bimply писал(а):
Не работает setAttributes,если просто прописать поля в валидацию+лейблы
сделать чтобы работали в setAttributes не проблема, только надо ли - вдруг добавленное поле вообще не должно меняться из вне?
bimply
Сообщения: 69
Зарегистрирован: 2012.08.13, 19:31

Re: Добавить новое поле в модель

Сообщение bimply »

yan писал(а):
bimply писал(а):
Не работает setAttributes,если просто прописать поля в валидацию+лейблы
сделать чтобы работали в setAttributes не проблема, только надо ли - вдруг добавленное поле вообще не должно меняться из вне?
Как сделать? Уже задолбался gii пересоздавать всё заново
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: Добавить новое поле в модель

Сообщение yan »

bimply писал(а): Не работает setAttributes,если просто прописать поля в валидацию+лейблы
что-то не внимательно прочитал - достаточно правильно прописать правила валидации чтобы через setAttributes заработало, для работы фильтров еще в методе search надо добавить
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Добавить новое поле в модель

Сообщение maleks »

может что то с кешированием схемы таблицы?
bimply
Сообщения: 69
Зарегистрирован: 2012.08.13, 19:31

Re: Добавить новое поле в модель

Сообщение bimply »

yan писал(а):
bimply писал(а): Не работает setAttributes,если просто прописать поля в валидацию+лейблы
что-то не внимательно прочитал - достаточно правильно прописать правила валидации чтобы через setAttributes заработало, для работы фильтров еще в методе search надо добавить
У меня все это сделано кроме метода search
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: Добавить новое поле в модель

Сообщение yan »

логи еще можно посмотреть, когда включен режим отладки отвергнутые атрибуты записываются http://www.yiiframework.com/doc/api/1.1 ... ute-detail
bimply
Сообщения: 69
Зарегистрирован: 2012.08.13, 19:31

Re: Добавить новое поле в модель

Сообщение bimply »

yan писал(а):логи еще можно посмотреть, когда включен режим отладки отвергнутые атрибуты записываются http://www.yiiframework.com/doc/api/1.1 ... ute-detail
Что то сложно как то. Неужто ни у кого не возникало подобной ситуации и все таблицы имели всегда верную структуру?
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Добавить новое поле в модель

Сообщение maleks »

В том что выведет следующий код есть новые столбцы?:

Код: Выделить всё

var_dump($arobject->getMetaData()); 
Ответить