Задать вопрос
sam002
@sam002
Линуксойд, кодер, немного физик.

Как работать с разбиением таблицы postgresql в YII-фреймворке?

Архитектура таблицы такая: разбиваю таблицу медиа-данных по типу (видео, текст, аудио). Хочу из общей таблицы только читать, а писать в разбиения. Не осилил создание адекватной модели для задачи, т.е. вынес в модули общую таблицу и в подмодули разбиения, виды не работают при этом - вечные ошибки бд, хотя напрямую запросы работают.
  • Вопрос задан
  • 2976 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
sam002
@sam002 Автор вопроса
Линуксойд, кодер, немного физик.
Решил вопрос так:
1) все модели в одном модуле (и основной таблицы и её разбиений)
2) для моделей (видео, аудио, текст) создал новые action-ы с представлениями через $this->renderPartial(MY_VIEW)
3) кастомизировал под различные источники представления (например для видео: youtube, vimeo)
4) для редактирования вызываю из представления для основной таблицы:
$this->beginClip('content');
    Yii::app()->runController('MODULE_NAME/'.$data->type.'/ACTION/id/'.$data->id);
$this->endClip('content');
echo $this->clips['content'];


В контроллере main имею и отображение (напрямую из основной таблицы), и редактирование через обращения к контроллерам разбиения.
Как таковые виды основной таблицы без обращения к разбиениям не используются, т.к. для каждого типа требуется кастомизация, но таким нехитрым способом делаю удобный перебор. Для ускорения первые 100 записей разбиения кеширую (индексы ещё строю, само-собой), а выборку из основной таблицы упорядочиваю по типу данных и запрашиваю сразу массивом.

PS: сейчас доделаю проектную часть и буду подробно изучать оптимизации запросов в yii, а то вся база ляжет при выборке с фильтрацией...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@cat_crash
Смотрите в сторону beforeSave и afterFind для модели данных.
Нагляднее здесь www.yiiframework.com/doc/blog/1.1/ru/post.create
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы