Как стать автором
Обновить

Комментарии 19

спасибо большое.
Жаль что такие вещи разработчики откладывают до 2.0, когда они относительно просто реализуются. Еще бы кэширование нормальное с автоматической инвалидацией сделать…
По поводу простоты: знаете как долго я ржал над этим решением после изучения и дебагинга девяти классов Doctrine? А оказалось, что нужно поправить только один файл, да и то чуть-чуть :)

А во второй версии они анонсировали сортировку?
видел этот фичереквест в их багтрекере, milestone 2.0 вроде бы стоит.

btw, не сталкивались с таким багом?
Был косяк с зендовским пагинатором, но потом перешли на доктриновский. Нет, такого не встречал.
переопределение класса доктрины через наследование точно не поможет справиться с проблемой?
Там внутри тех классов, которые реально переопределить, используются другие классы доктрины, которые подменить уже не получится. Relation — один из них.

Недавно нам тоже пришлось делать грязный хак доктрины для отвязывания наследования моделей от базового класса (т.е. необходимости перечислять наследников в базовом). Правда, обошлось без изменений библиотеки :)
Кажется вчера читал об этом в доке :)
Может я что-то сильно не замечаю, но по-моему в доктрине нет способа сделать наследование моделей, хранящихся в одной таблице, без указания всех подклассов в базовом классе (кроме Simple, который, по понятным причинам, не подходит).
Я наверное туплю :) Теперь я вас понял.
Мы подобную проблему решали путем исключения базового класса модели и наследованием модели напрямую от Doctrine_Record, естественно с переносом setTableDefinition.
Вряд ли описанный метод решает проблему. Суть в том, чтобы при выборке Doctrine::getTable( «Base_Class» )->find( $id ) возвращался объект Derived_Class (extends Base_Class), но чтобы при этом Base_Class ничего не знал про Derived_Class (как это и должно быть в ООП).
Вы прям вынуждаете меня поднять исходники того проекта, где это использовалось :) Если не забуду, гляну попозже :)
можно увидеть код этого хака?
спасибо за решение. Думаю обязательно пригодится.
кстати, если кому интересно вот призентация Symfony 1.3 + Doctrine 1.2
А есть какой нибудь способ отфильтровать коллекцию дальше? Предположим мне не нужны все записи и я хочу отобрать их по какому либо критерию? Насколько я знаю почти во всех ОРМ это есть, а в доктрине то, что по связи возвращается практически тупой массив, который ни пофильтруешь, ни отсортируешь, довольно разочаровывает.
Можно тем же способом передать дополнительные параметры.
Фильтровать обычно нужно динамически, да и сортировать не помешало бы тоже.
С этим сложнее. Просто реализовать, если отключить кэширование моделей, но это не айс.
Так что пока придется юзать метод прямой выборки коллекции через createQuery. А там может во второй версии что-то придумают.
Даже в пропеле, от которого почти все отказываются это есть. На практике получается отношения в доктрине на 90% бесполезны. Что сортировку, что фильтры надо делать через query.
Именно по этой причине не раз хотелось написать свою ORM :)
Пока весь вроде обычный функционал приходится делать через жопу.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации