Что самое легкое в использовании рамки ORM для PHP?

Я ищу активную запись Ruby для PHP. Что-то настолько простое, что я просто определяю свои поля, расширяю базовый класс ORM, и я получаю операции ACID бесплатно. Я должен получать утилизаторы и сеттеры по умолчанию без написания кода, но переопределение по умолчанию getter или setter так же просто, как объявление get $ fieldName или установка функций $ fieldName с поведением, которое я хочу. Symphony позволяет создавать около 5 файлов на объект, и все определенные объекты всегда загружаются, насколько я могу судить. Что является лучшей альтернативой? Почему это лучше? Можете ли вы привести простые примеры в свои ответы, пожалуйста?

Доктрина – это еще один ORM, на который я смотрел, помимо симфонии. Также вам нужно создать файлы yaml, которые описывают ваши структуры данных. База данных уже определяет этот материал. Что будет просто читать мои таблицы defs без необходимости генерировать и хранить файлы конфигурации везде?

Оба CodeIgniter ( http://codeigniter.com/user_guide/database/active_record.html ) и его PHP5 только fork Kohana ( http://docs.kohanaphp.com/libraries/orm ) содержат реализации шаблона ActiveRecord.

Я большой поклонник Doctrine, который является полнофункциональным ORM, который заменит Propel на ORM по умолчанию Symfony.

У вас есть ваш основной материал ORM, который вы ожидаете вместе с полнофункциональным построителем запросов, который, как мне показалось, замечательный.

Он поставляется с полным набором инструментов командной строки для управления вашими базами данных. Например, вы можете создавать свои схемы и светильники в YAML, иметь Doctrine, создавать классы на основе вашей схемы, создавать базу данных, создавать схему на основе моделей, а затем заполнять базу данных вашими светильниками все с помощью единого ./doctrine build-all-reload .

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

В соответствии с жалобами вашей доктрины вы можете запустить команду ./doctrine generate-models-db или ./doctrine generate-yaml-db чтобы автоматически создавать модели и файлы yaml соответственно из текущей настройки базы данных.

Другие тонкости включают « Behaviors », что значительно облегчает жизнь при реализации определенных, ну, поведения в вашей схеме. Например, вы можете добавить поведение «Timestampable» в ваш файл класса. Doctine автоматически добавляет столбец «created_at» и «updated_at», заполняет их, и каждый запускаемый объект $object->save() автоматически обновляет столбец «updated_at». Более сложное поведение включает i18n, управление версиями таблиц и деревья (хотя на самом деле это только NestedSet).

Лично я был чрезвычайно влюблён в Доктрину и восторженно рассказывал об этом каждый шанс получить.

Я использую малоизвестный слой orm, называемый redbean. вы можете найти его здесь: http://www.redbeanphp.com . его абсолютно уникальный в том смысле, что он просто создает таблицы столбцов и индексов самостоятельно без каких-либо файлов конфигурации. Я нахожу, что это огромный развал!

Я создал свой собственный, без раздувания. (Хотя мне нужно обновить мои источники на месте)

Я создал его именно с учетом указанных вами соображений: нет десятков xml-файлов, нет огромных фреймворков, просто простых конструкторов с базой данных для свойств mappigns, и это ваш основной материал CRUD / Find / Join. Для большинства вещей, которые я делаю, мне даже не нужно писать пользовательские запросы.

Я написал все это раньше на моем сайте , не забудьте проверить основные примеры, чтобы получить представление об этом.

Следующая версия, которую я выпущу, включает в себя однострочное соединение для присоединения к join on join (чтобы пройти «путь» через вашу базу данных), настройки базы данных ini, поддержку кросс-базы данных, супер-простую абстракцию базы данных и стандартный логгер, который падает вернитесь к SQLite, если ваша база данных не работает.

Просто дайте крик, если вы заинтересованы в обновлениях, я тогда буду спешить.

О да, и не забывайте, есть также красивый визуальный генератор эшафотов, называемый Pork.Generator . Он пытается проанализировать структуру вашей базы данных и найти 1: 1 1: многие и многие: многие отношения и может автоматически генерировать классы для вас 🙂 отношения, найденные в базе данных http://www.schizofreend.nl/images/demo3. JPG

Zend_Db_Table и Zend_Db_Table_Row довольно хороши в том, что вы описываете. Вам не нужен какой-либо файл конфигурации, большинство метаданных «обнаружено» из самой базы данных.

Технически эти классы не реализуют шаблон ActiveRecord. Вместо этого они реализуют шаблоны данных Data Gateway и Row Data Gateway . Вместе они предлагают аналогичную ценность, как ActiveRecord, и в некотором смысле более гибкие, чем ActiveRecord.

Но, как и в случае любой ORM, неизбежно возникают некоторые SQL-запросы и операции, которые невозможно выполнить через интерфейс OO. ORM не может служить универсальным магазином.

Сноска: Я работал над проектом Zend Framework чуть больше года, особенно на компоненте Zend_Db. Но я больше не работаю для них.

Проверьте поддерживаемую структуру. Хотя я предпочитаю генерировать код по сравнению с ActiveRecord (отражение во время выполнения), я обнаружил, что поддерживаемая среда проста в использовании, особенно с точки зрения возможностей ORM.

http://framework.maintainable.com/mvc/3_model.php#c3.7

Если вам нужна структура, основанная на генерации кода, попробуйте QCodo. Что бы вы ни говорили о доктрине, я могу сказать для Qcodo. Это полноценная платформа, имитирующая .NET / Delphi. Однако вы можете просто создать функцию генерации кода и найти способы отделить ваш сгенерированный класс от остальной части фреймворка. Таким образом, вы можете вставлять сгенерированные классы в другие структуры.

Другим вариантом, который следует за реализацией Ruby DataMapper, является phpDataMapper . Очевидно, это Data Mapper вместо ActiveRecord :).

Я бы рекомендовал Учение с Symfony. Несмотря на то, что вам нужно узнать больше, вы обнаружите, что у вас есть функции, которые вам понадобятся после того, как проект будет расти (CRUD, Form framework, Record Templates, DQL, Plugin support, Behaviors). Оба проекта имеют очень активное сообщество, и вы не должны заходить в тупик, потому что большинство ваших вопросов уже были услышаны в официальных учебниках или на форуме.

Если вам не нравятся определения базы данных в YAML, вы всегда можете использовать ORM Designer или MySQL Workbench.

Я рекомендую QCubed . Это невероятно мощная инфраструктура ORM, основанная на PHP5, которая фокусируется на разработке кода, разработке пользовательских интерфейсов и быстрой разработке приложений. Взгляните на обучающие видео: http://qcu.be/content/video-screencasts

http://dbphp.net

Pros

  • Генерирует / изменяет базы данных / таблицы / поля / различные атрибуты таблицы / поля на лету.
  • Не требуется установка.
  • Не имеет конфигурации вообще.
  • Нужно только включить библиотеку и указать параметры ссылки db для начала работы.
  • Он имеет встроенную поддержку локализации.
  • Он имеет различные уровни кеша и позволяет расширить механизм кеша.
  • Он одновременно работает со многими различными подключениями к базе данных.
  • Он может устанавливать отношения между таблицами, расположенными на других серверах баз данных.
  • Он извлекает атрибуты таблицы / поля, используя комментарии класса и переменных doc.

Cons

  • Он работает только с объектами. т.е. вы должны иметь определенный класс и иметь экземпляр класса для сохранения нагрузки или т. д.
  • У него нет сайта, но есть папка с примерами.

Мне нравится Idiorm и Paris, и они используют их как в крошечных проектах. Idiorm – это реальный ORM, тогда как Париж является активной реализацией записи. Вы можете использовать тот, который вы бы предпочли.

Существует также вилка под названием Гранада , которая построена над Идиормом и Парижем, и добавляет поддержку, такую ​​как нетерпеливая загрузка и т. Д.

Объектный реляционный сопоставитель (ORM) для PHP, который находится поверх мощного уровня абстракции базы данных (DBAL). Одной из его ключевых особенностей является возможность записи запросов к базе данных в проприетарном объектно-ориентированном диалекте SQL под названием Doctrine Query Language (DQL), вдохновленном Hibernates HQL. Это дает разработчикам мощную альтернативу SQL, которая поддерживает гибкость, не требуя ненужного дублирования кода.

Взгляните на Foxorm или RedBean