capt
(Capt)
November 20, 2009, 9:58am
1
Подскажите, если кто в курсе, как грамотно решить задачу работы с полиморфными моделями?
То есть у меня есть таблица, скажем, Shapes. В ней хранятся все фигуры. Есть таблицы Circles, Triangles и т.п.
В них хранятся дополнительные параметры к фигурам из Shapes. Связаны по Shapes.id=Circles.shapeId и т.д.
Задача:
Грамотно создать модели для этой схемы
Желательно получать их список, скажем, по OWNER_ID, в котором модели будут уже соответствующих классов.
п. 1 - важнее.
Если где есть примеры, обсуждения - буду благодарен за ссылки.
Zolter
(Zolter Od)
November 20, 2009, 10:42am
2
Данные в базе?
Тогда это простые модели связанные через relation
capt
(Capt)
November 21, 2009, 5:44am
3
То есть через HAS_ONE?
А наследовать никак не получится?
Дело в том, что предполагается и разное поведение у разных классов.
Как-то бы это в ООП уложить
Zolter
(Zolter Od)
November 21, 2009, 10:03am
4
Обьясните лучше подробнее зачем это надо, и мы найдем вам тысячу способов других решений )
capt
(Capt)
November 21, 2009, 5:20pm
5
Гут.
Например, модели отображаются в списке на странице, у каждой свои подробности.
У модели одного класса есть IP-адрес, его нужно отобразить. У другой - еще чего-то.
При наследовании я пишу метод get … эээ … getПодробности . И где нужно, вставляю вызов.
Страница редактирования тоже, есс-но разная для различных классов.
Не знаю, может это действительно не лучшее решение, ну намекните на лучшее.
samdark
(Alexander Makarov)
November 24, 2009, 12:01pm
7
interface IDetails {
function getDetails(){}
}
class Site extends CActiveRecord implements IDetails {
//…
function getDetails(){
return $this->ip;
}
//…
}
class Post extends CActiveRecord implements IDetails {
//…
function getDetails(){
return $this->author;
}
//…
}