YiiFramework Одна таблица - две модели.

Dimanoss

Новичок
Такая вот задачка. Есть у меня в БД таблица, на основе её мне нужно создать две модели. В таблице есть поле (пусть будет - ), если значение в этом поле = 0, то данные принимаются одной моделью, если = 1, то другой. Господа Знатоки, как бы это поизящнее реализовать?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Вообще, выбор класса по внешнему параметру - это стратегия, но лучше опиши задачу как есть. 2 класса на таблицу не делают. Возможно, тебе подойдут сценарии в валидаторах или обработчики событий.
 

Dimanoss

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

Вурдалак

Продвинутый новичок
Гугли по «single table inheritance».

Но если, как ты говоришь, объекты «принципиально разные», то нужен рефакторинг. Подобные трюки только усугубят ситуацию в будущем.
 

Dimanoss

Новичок
вообще-то мне ближе как-то переписать SELECT в SQL, но с Yii я пока что не знаком совсем (первый проект), думаю вот - не проще как-то что-то там расширить? Сам фреймворк мне нравится - изящный он какой-то, вот и хотелось бы как-то всё правильно сделать, не лапая грязными лапами ядро...
 

hell0w0rd

Продвинутый новичок
А нельзя сделать две декорирующие модели, которые разделят эту логику?
 

Dimanoss

Новичок
что-то получаться стало с CDbCriteria. Но вот работает только с поиском, как это натянуть на модель изначально, нигде примера не найду...

А нельзя сделать две декорирующие модели, которые разделят эту логику?
слово "декорирующие" недопонял, но, видимо, как-то так и пробую делать.
 

Dimanoss

Новичок
YES! Gas - респект и уважуха! :) Искомое - defaultScope()... Ну, пока никаких подводных камней не обнаружено.
 
Сверху