Propel
Symfony: Propel предзагрузка объектов (preload objects)
Цель: уменьшить количество запросов для таблиц использующих много внешних ключей.
Описание проблемы: имеем 4 таблицы: news, news_i18n, news_type и news_type_i18n. На странице нужно отобразить список из 20 новостей, используя все перечисленные таблицы. А это 21 запрос. Методы doSelectWithI18n и doSelectJoinAll не позволяют получить значения i18n NewsTypePeer для NewsPeer с минимальным количеством запросов к БД.
Решение проблемы: [...]
Объявление типов столбцов (enum, datetime, tinytext, year) для MySQL, которые явно не поддерживаются в Propel 1.3
В документации Propel можно увидеть таблицы соответствия между ним и типами столбцов MySQL (Propel Column Types). Проблема в том, что не все типы столбцов можно явно указать, например, если в схеме указать нижеследующее, то получим ошибку на счет поля created_at:
my_product_i18n:
_attributes: { phpName: ProductI18n }
id: [...]
Symfony и Propel 1.3: реализация своих joins в методах doSelect*
Это решение проблемы для Symfony 1.1 и Propel 1.3, когда нужно из двух таблиц объединенных черех join получить все данные. Т.е. хотим выполнить такой запрос
SELECT news.NEWS_ID, news.CATEGORY_ID, news.TITLE, news.BODY, news.CREATED_AT,
news_category.CATEGORY_ID, news_category.NAME
FROM `news`
LEFT JOIN news_category ON (news.CATEGORY_ID=news_category.CATEGORY_ID)
А вот с этим проблема, если таблицы не связаны через внешний ключ (foreign key), вывести данные [...]

