То, что вы пытаетесь сделать, является сложной проблемой, потому что mySql поддерживает только отношения First Normal Form, а не наследование OOP. Это называется "полиморфная ассоциация". Есть несколько решений, хотя. Действительно хороший ответ SO, который описывает некоторые из них, можно найти здесь:
Можно ли сделать внешний ключ MySQL для одной из двух возможных таблиц?
Один из возможных вариантов решения (я думаю, что второй из перечисленных в приведенной выше ссылке) с Yii может состоять в том, чтобы иметь одну таблицу «объект» с полем «тип», а затем разделить таблицы с полями, необходимыми для другие виды "объектов". Затем в методе afterFind () базовой модели объектов посмотрите на поле типа и присоедините к ним тип Поведения , которые разрешают доступ к столбцам таблицы типов.
Кроме того, , если вам действительно нужен более простой способ создания ссылок или коротких URL-адресов , вы можете написать в фреймворке несколько дополнительных функций, которые в основном просто упрощают создание ссылок на объект. Имеют отдельные модели для всех типов объектов, как обычно, но имеют центральную таблицу с главным первичным ключом (или слагом URL), который имеет отношение к отдельным типам. Вы можете переопределить createUrl (), чтобы он просто брал главный ключ (независимо от типа содержимого), а затем создать правильную ссылку, посмотрев, какую модель / контроллер использовать в главной таблице.
Это то, что позволяет вам делать псевдонимы URL в Drupal. Проще, чем воссоздать систему, подобную Drupal CCK! Что в любом случае было бы ненужным, если бы вам не понадобилась гибкость для изменения контента в будущем.