Предыдущий коммент отправился не вовремя ). Опишу подробнее.
$oUser->save(); Обновит кэш вызовом метода (addInstanceToPool($this)).
$oUser->delete(); Удалит из кэша объект (removeInstanceFromPool()).
UserPeer::retrieveByPk(); Положит объект в кэш, если его там нет (getInstanceFromPool, addInstanceToPool())
UserPeer::doDelete(); очистит весь кэш модели, если в него передадут объект Criteria (clearInstancePool()) или конкретный объект (removeInstanceFromPool()), если передадут PK.
Таким образом, если мы будем менять данные в базе только через модель, за актуальность отвечает Propel, иначе — мы сами.
1. У меня иное немного мнение на этот счет. Дело в том, что если использовать join'ов в Propel'e продолжая пример указанный в статье на 20 объектов фоток создастся 20 экземпляров объекта юзера, а не один на всех.
2. Согласен, но ведь это скорее рекомендация, а не необходимость )
3. Согласен.
>что при обновлении/создании объекта модели надо обновлять пул (и кэш) или он обновляется автоматически
Обновлять пул не надо, т.к. при вызове метода save обновленный объект кладется в пул автоматически. Необходимо только переопределить 4 указанных в статье метода.
>А в сторону Doctrine не смотрели?
Нет не смотрел. Но там кажется эта ситуация решена.
Propel устанавливается плагинов в Symfony и обновляется непосредственно его разработчиками. Если мне необходимо переопределить генератор кода, то надо изменять плагин. А это значит я меняю код фреймворка.
В документации по Symfony способа обойти эту ситуацию я не нашел. Если знаете, поделитесь ссылкой.
$oUser->save(); Обновит кэш вызовом метода (addInstanceToPool($this)).
$oUser->delete(); Удалит из кэша объект (removeInstanceFromPool()).
UserPeer::retrieveByPk(); Положит объект в кэш, если его там нет (getInstanceFromPool, addInstanceToPool())
UserPeer::doDelete(); очистит весь кэш модели, если в него передадут объект Criteria (clearInstancePool()) или конкретный объект (removeInstanceFromPool()), если передадут PK.
Таким образом, если мы будем менять данные в базе только через модель, за актуальность отвечает Propel, иначе — мы сами.
2. Согласен, но ведь это скорее рекомендация, а не необходимость )
3. Согласен.
Обновлять пул не надо, т.к. при вызове метода save обновленный объект кладется в пул автоматически. Необходимо только переопределить 4 указанных в статье метода.
>А в сторону Doctrine не смотрели?
Нет не смотрел. Но там кажется эта ситуация решена.
В документации по Symfony способа обойти эту ситуацию я не нашел. Если знаете, поделитесь ссылкой.