Показать сообщение отдельно
Старый 13.04.2008, 16:36   #23
jettero
Senior Member
 
Регистрация: 24.06.2006
Сообщений: 143
По умолчанию

Цитата:
Сообщение от void Посмотреть сообщение
Если я правильно понял, эта штука не умеет связывать таблицы? Если так, то, как говорится, фтопку.

//У меня в своё время была безумная идея сделать генератор Doctrine-классов на основе $TCA
А как бы она автоматически связывала таблицы? Дело в том, что это часто зависит от формата вывода данных. То есть часто это определяется не моделью, а view.

Я сейчас делаю отдельное расширение, которое на основе конфига в typoscript, где описан какой должен быть вывод, включая взаимосвязь таблиц и описание форматирования всех значений, строит запрос к базе данных, причем один-единственный запрос. Затем расширение парсит ответ из БД, форматирует его и вставляет в шаблон, который описан в том же самом typoscript файле и возвращет готовый HTML.

В результате, там где в commerce, например для вывода list view, когда много атрибутов в продуктах и артикулах, используется порядка ста запросов к БД, мое расширение делает один! запрос, но сложного вида - в одном запросе там например бывает 25 вложенных таблиц, скорость обработки такого сложного запроса в MySQL не намного меньше, чем обработка одного простого запроса, и в результате нагрузка на БД снижается очень значительно, поскольку вместо ста запросов делается один. Также большой плюс в том, что запрос строится автоматически, на основании конфига. При таком подходе, я даже не вижу смысла использовать ORM, поскольку с отдельными записями работа не идет. Разработчик строит только описание вложенных таблиц, задает самые общие условия для выборки, например для list view в commerce задает какие продукты надо вывести, а расширение само строит запрос, связывая таблицу продуктов с артикулами, далее связывает со списком атрибутов, далее подключает таблицы значений атрибутов итд ..., все это в одном SQL запросе, а на выходе из расширения получаем готовый HTML.

Последний раз редактировалось jettero; 13.04.2008 в 16:51
jettero вне форума   Ответить с цитированием