За последние 24 часа нас посетили 50173 программиста и 1691 робот. Сейчас ищут 1032 программиста ...

Doctrine 2 PHP ORM

Тема в разделе "Прочие вопросы по PHP", создана пользователем alexey_baranov, 31 янв 2011.

  1. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    Привет!

    Есть уже кое-какой опыт Doctrine 2. Штука акуенная! Может сохранять любые объекты, которые не обязательно наследуются от какого-то специального класса. Может Работать с чужой базой, переводя строки в php-шные объекты, если база хоть более менее была по правилам состряпана. Все шаблоны проектирования "взрослых" орм учтены. Есть Юнит оф ворк, репозитории, квери и квери билдеры. Уже наклепал своих репозиториев, все расширяется легко и приятно. Кто пользовался Hibernate или NHibernate(я только второй), учить не придется вообще ни чего. Только синтаксис немного другой и все.

    Всем доволен бага пока ни одного не заметил. Сколько нас на Doctrine 2 тут? Отзовитесь...
     
  2. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    я на Entety Framework-е ))
     
  3. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    а почему не на NHibernate?
     
  4. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    alexey_baranov
    а его искаробки нету )))
     
  5. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    отнекропостю. Мы пользуемся ей около полугода уже. В принципе полет нормальный, но за последний месяц всплыло 2 довольно критичных бага. Один я уже зарепортил, но никто не телится его исправлять пока что. Второй буду репортить. Самому поправить нереально, там с гидраторами или идентити мэп проблемы.
     
  6. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    Ух ты какая тема всплыла! :)

    Я тоже около полугода и больше. Пользуюсь только основными возможностями. Из продвинутых только наследование внутри одной таблицы. Времени она мне сэкономила еще ан полгода!

    Единственное, я когда начинал писать, она была еще бета, поэтому всякие сложные вещи на ней даже не пытался делать. Обошелся дэкуэлами, персистами и файндами. Из того, что использую, летает все на ура.

    Кстати есть потребность уже очень давно в деревьях и так называемых аудит логах. Есть какой-нить опыт в этом?
     
  7. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    хе-хе, а я думал ты форум не посещаешь.

    Мы пользуемся версией 2.1, в общем-то сразу без проблем обновились на нее, как только вышла. На 2.2 перейти наверно будет тяжелее.

    С деревьями - да, опыт есть. У нас территориальная структура в виде дерева + STI http://www.doctrine-project.org/docs/or ... nheritance (Country, Region, City, District). Для деревьем используем Closure table https://github.com/l3pp4rd/DoctrineExtensions/issues/1 (эт я кстати первый тикет создал), тут все в принципе отличненько.

    Для логов у этого же товарища имеется расширение http://gediminasm.org/article/loggable- ... -doctrine2


    В общем я ни минуты не жалею, что выбрал доктрину2, а не Jelly или RapidDataMapper. Тикеты мои кстати починили http://www.doctrine-project.org/jira/browse/DDC-1492 http://www.doctrine-project.org/jira/browse/DDC-1436

    Из относительно-экзотического: я писал расширение, которое добавляет возможность использовать ValueObject Coordinate(latitude, longitude) - после загрузки сущности создает его, перед сохранением в базу преобразовывает его в стандартные float + маппинг для таблиц сам делает. Ну и функции для DQL - нахождение даты от колонки, и дистанции между двумя точками
     
  8. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    вообще вот чего реально не хватает - динамических фильтров и коллекций (коллекции связанных сущностей - эт не то).
     
  9. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    Хоть кто-то на этом форуме полезной информацией делится. Посмотрю обязательно
     
  10. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    доктрина 2.2 ваще зверь будет. Столько всяких полезных штук добавили. Правда боюсь, что первое время она будет очень нестабильна
     
  11. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    рассказывали бы об основных плюсах-то. глядишь, и народ бы на неё подтягивался)
     
  12. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    Интересно. Ну раскеж, что там. Меня больше всего интересует упорядоченные коллекции, т.е. чтоб как в оригинальных Hibernate в маппинге можно было указать колонку index, в которой хранится позиция элемента в коллекции, и выборка коллекций происходила согласно этой колонке.
     
  13. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    есть такая тема в 2.1 http://www.doctrine-project.org/docs/or ... #onetomany

    параметр indexBy - использовать в качестве ключа колонку
    аннотация OrderBy - сортировать по колонке

    про 2.2 попожже расскажу
     
  14. alexey_baranov

    alexey_baranov Активный пользователь

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    Спасибо за наводку. Прикрутил этот плагин к своему проекту. В принципе даже в таком виде доволен. Работает он, к сожалению, на 50% потому что не умеет следить за коллекциями ассоциаций. Как так написали, не понятно?

    Еще немного замудрено подключается к доктрине. Пришлось покопать интернет, чтобы понять куда делись классы аннотаций. Их, оказывается, надо загружать вручную, им запрещено загружаться через автолоад.

    Если допишут работу с коллекциями, будет зачет.