Есть ли хорошая библиотека объектно-реляционного отображения для PHP?
Я знаю о PDO / ADO, но, похоже, они обеспечивают только абстракцию различий между поставщиками баз данных, а не фактическое отображение между моделью предметной области и реляционной моделью. Я ищу библиотеку PHP, которая работает так же, как Hibernate для Java и NHibernate для .NET.
Есть только два хороших: доктрина и пропел . Мы одобряем Доктрину, и она хорошо работает с Symfony . Однако, если вы ищете поддержку баз данных, кроме основных, вам придется написать свой собственный код.
источник
Axon ORM является частью Fat-Free Framework - он имеет картограф на лету. Нет генераторов кода. Нет глупых файлов конфигурации XML / YAML . Он считывает схему базы данных непосредственно из бэкэнда, поэтому в большинстве операций CRUD вам даже не нужно расширять базовую модель. Он работает со всеми основными механизмами баз данных, поддерживаемыми PDO : MySQL , SQLite , SQL Server / Sybase, Oracle, PostgreSQL и т. Д.
Более того, плагин и сопровождающий уровень доступа к данным SQL так же легки, как и фреймворк: 14 КБ (Axon) + 6 КБ (SQLdb). Без жира всего 55 КБ.
источник
$product->load('product_id=123')
примера.$product->load(array('product_id=:id',array(':id'=>123)));
Я разрабатывал Pork.dbObject самостоятельно. (Простая реализация PHP ORM и Active Record). Основная причина в том, что большинство ORM мне кажутся слишком тяжелыми.
Основная идея Pork.dbObejct - быть легким и простым в настройке. Нет группы файлов XML, только один вызов функции в конструкторе, чтобы связать его, и addRelation или addCustomRelation, чтобы определить отношение к другому dbObject.
Дайте ему посмотреть: Pork.dbObject
источник
Попробуйте Doctrine2 . Это, вероятно, самый мощный инструмент ORM для PHP. Я упоминаю об этом отдельно от Doctrine 1, потому что это совершенно другое программное обеспечение. Он был переписан с нуля, все еще находится на стадии бета-тестирования, но теперь он пригоден для использования и разработан.
Это очень сложный ORM, но хорошо продуманный. Много магии из оригинальной Доктрины 1 исчезло. Он предоставляет полное решение, и вы можете написать свой собственный ORM поверх Doctrine2 или использовать только один из его слоев .
источник
Я только начал с Kohana , и он кажется наиболее близким к Ruby on Rails, не задействуя всю сложность нескольких конфигурационных файлов, как с Propel .
источник
Проверьте аутлет ORM . Он проще, чем Propel и Doctrine, и работает аналогично Hibernate, только с большей чувствительностью к PHP.
источник
Мне очень нравится Propel , здесь вы можете получить обзор, документация довольно хорошая, и вы можете получить его через PEAR или SVN.
Вам нужна только рабочая установка PHP5 и Phing, чтобы начать создавать классы.
источник
Я нашел связанные с ORM классы в библиотеке PHP Flourish .
источник
Вы должны проверить Идиорм и Париж .
источник
Дать шанс Dorm, объектно реляционного отображения для PHP 5 . Он поддерживает все виды отношений (1-к-1), (1-ко-многим), (многие-ко-многим) и типы данных. Это совершенно незаметно: не требуется генерация кода или расширение классов. На мой взгляд, он превосходит любой ORM, включая Doctrine и Propel. Тем не менее, он все еще находится в бета-версии и может значительно измениться в ближайшие пару месяцев. http://www.getdorm.com
У этого также есть очень маленькая кривая изучения. Три основных метода, которые вы будете использовать:
источник
В настоящее время я работаю над phpDataMapper , который представляет собой ORM, разработанный для простого синтаксиса, подобный проекту Datamapper в Ruby. Он все еще находится на ранней стадии разработки, но прекрасно работает.
источник
У меня был большой опыт с Идиормом и Парижем . Idiorm - это небольшая простая библиотека ORM. Paris - это одинаково простая реализация Active Record, построенная на Idiorm. Это для PHP 5.2+ с PDO. Это прекрасно, если вы хотите что-то простое, что вы можете просто вставить в существующее приложение.
источник
Попробовал ОРМ библиотеки Процветания .
источник
До выхода PHP 5.3 не ожидайте хорошего ORM. Это ОО ограничение PHP.
источник
Мой друг Кин и я улучшили более раннюю версию ORM, которую он написал до PHP 5.3. По сути, мы перенесли активную запись Ruby on Rails на PHP. В нем по-прежнему отсутствуют некоторые ключевые функции, которые нам нужны, такие как транзакции, поддержка составного первичного ключа, несколько дополнительных адаптеров (сейчас работают только MySQL и SQLite 3). Но мы очень близки к тому, чтобы закончить это дело. Вы можете взглянуть на PHP ActiveRecord с PHP 5.3 .
источник
Попробуйте PHP ADOdb.
Я не могу сказать, что это лучшее, потому что я не использовал другие. Но это быстро, он поддерживает Memcached и кеширование.
И это намного быстрее, чем в Zend Framework DB / Select.
источник
Посмотрите на LEAP ORM для Кохана . Он работает со множеством баз данных, включая DB2 , Drizzle , Firebird , MariaDB , SQL Server, MySQL , Oracle, PostgreSQL и SQLite . С помощью простой функции автозагрузки он может работать практически с любым фреймворком PHP. Исходный код находится на GitHub по адресу https://github.com/spadefoot/kohana-orm-leap . Вы можете проверить учебники LEAP онлайн.
Библиотека ORM работает с нецелыми первичными ключами и составными ключами. Соединения управляются через пул соединений с базой данных, и он работает с необработанными SQL-запросами. ORM даже имеет построитель запросов, который делает построение операторов SQL очень простым.
источник
Вы можете проверить Repose, если вы чувствуете себя предприимчивым. Как и Outlet , он смоделирован после Hibernate .
Он все еще находится на очень ранней стадии разработки, но пока единственными ограничениями в модели предметной области являются то, что классы не помечены как окончательные, а свойства не помечены как частные. Как только я попаду в страну PHP> = 5.3, я попытаюсь реализовать поддержку частных свойств.
источник
Если вы ищете ORM, который реализует парадигму Data Mapper, а не Active Record, то я настоятельно рекомендую вам взглянуть на GacelaPHP .
Особенности Gacela:
Другие решения ORM слишком раздуты или имеют обременительные ограничения при разработке чего-либо удаленно сложного. Gacela устраняет ограничения подхода активной записи, внедряя шаблон отображения данных, сохраняя при этом раздутость до минимума, используя PDO для всех взаимодействий с базой данных и Memcached.
источник
MicroMVC имеет 13 КБ ORM, который опирается только на класс базы данных 8 КБ . Он также возвращает все результаты в виде самих объектов ORM и использует позднюю статическую привязку, чтобы избежать встраивания информации о таблице текущего объекта и метаданных в каждый объект. Это приводит к самым низким накладным расходам ORM.
Он работает с MySQL , PostgreSQL и SQLite .
источник
Бразильский ORM: http://www.hufersil.com.br/lumine . Работает с PHP 5.2+. На мой взгляд, это лучший выбор для португальцев и бразильцев, потому что он имеет простую для понимания документацию и множество примеров для скачивания.
источник
Agile Toolkit имеет собственную уникальную реализацию ORM / ActiveRecord и динамический SQL .
Введение: http://agiletoolkit.org/intro/1
Синтаксис (активная запись):
Синтаксис (динамический SQL):
Хотя Dynamic SQL и Active Record / ORM можно использовать напрямую, Agile Toolkit дополнительно интегрирует их с пользовательским интерфейсом и пользовательским интерфейсом jQuery . Это похоже на JSF, но написано на чистом PHP.
Это отобразит AJAXified CRUD с моделью сотрудника.
источник
NotORM
источник
PHP ORM Faces Для расширения PDO. Смотрите PHP Faces Framework .
источник
Посмотрите на http://code.google.com/p/lworm/ . Это действительно простая, но мощная и легкая система ORM для PHP. Вы также можете легко расширить его, если хотите.
источник
Еще один отличный PHP ORM с открытым исходным кодом, который мы используем, это PHPSmartDb . Он стабилен и делает ваш код более безопасным и чистым. Функциональность базы данных в ней - самая простая, которую я когда-либо использовал с PHP 5.3.
источник
Доктрина - это, вероятно, ваш лучший выбор. До Доктрины DB_DataObject был, по сути, единственной другой утилитой с открытым исходным кодом.
источник
Если вы ищете ORM, например, Hibernate , вы должны взглянуть на PMO .
Он может быть легко интегрирован в архитектуру SOA (существует только класс веб-сервиса).
источник