Хорошая PHP ORM библиотека?

Есть ли хорошая библиотека объектно-реляционного отображения для PHP?

я знаюPDO/ ADO, но, похоже, они обеспечивают только абстракцию различий между поставщиками баз данных, а не фактическое сопоставление между моделью предметной области и реляционной моделью. Я ищу библиотеку PHP, которая работает аналогичнозимовать делает для Java и NHibernate делает для .NET.

Ответы на вопрос(29)

Я работаю на miniOrm. Просто мини ORM, для использования Object Model & amp; MySQL Abstraction Layer максимально просто. Надеюсь, это поможет вам:http://jelnivo.fr/miniOrm/

Я нашел связанные с ORM классы в библиотеке PHPПроцветать.

мне действительно нравитсяприводить в движение, Вот вы можете получить обзор,документация это довольно хорошо, и вы можете получить его через PEAR или SVN.

Вам нужна только рабочая установка PHP5, иPhing начать создавать классы.

 05 июл. 2011 г., 12:17
Propel также может «перепроектировать»; существующая схема базы данных - создание объектов PHP из чтения схемы базы данных.

Дать шансdORM, объектно-реляционный картограф для PHP 5, Он поддерживает все виды отношений (1-к-1), (1-ко-многим), (многие-ко-многим) и типы данных. Это совершенно незаметно: не требуется генерация кода или расширение классов. На мой взгляд, он превосходит любой ORM, включая Doctrine и Propel. Тем не менее, он все еще находится в бета-версии и может значительно измениться в ближайшие пару месяцев.http://www.getdorm.com

У этого также есть очень маленькая кривая изучения. Три основных метода, которые вы будете использовать:

<?php 
$object = $dorm->getClassName('id_here');
$dorm->save($object);
$dorm->delete($object);
 16 июн. 2012 г., 04:12
ссылка не работает?

NotORM

include "NotORM.php";
 $pdo = new PDO("mysql:dbname=software");
 $db = new NotORM($pdo);
 $applications = $db->application()
->select("id, title")
->where("web LIKE ?", "http://%")
->order("title")
->limit(10)
;
foreach ($applications as $id => $application) {
echo "$application[title]\n";
}

Вы можете проверитьпокоиться если вы чувствуете себя предприимчивым подобноВыход, моделируется послезимовать.

Он все еще находится на очень ранней стадии разработки, но пока единственными ограничениями в модели предметной области являются то, что классы не помечены как окончательные, а свойства не помечены как частные. Как только я попаду в страну PHP & gt; = 5.3, я попытаюсь также реализовать поддержку частных свойств.

Я разрабатывал Pork.dbObject самостоятельно. (Простая реализация PHP ORM и Active Record) Основная причина в том, что я считаю большинство ОРМ слишком тяжелыми.

Основная идея Pork.dbObejct - быть легким и простым в настройке. Нет связки файлов XML, только один вызов функции в конструкторе, чтобы связать его, и addRelation или addCustomRelation, чтобы определить отношение к другому dbObject.

Дайте ему посмотреть:Pork.dbObject

 14 апр. 2009 г., 19:21
Сегодня я искал легкую реализацию PHP ORM и нашел Pork.dbObject благодаря этому посту. Работает отлично! +1
 06 дек. 2010 г., 15:22
Duude! Это довольно интересно. Я вижу, что последнее обновление произошло когда-то, в '09. Это все еще поддерживается? Если нет ... Я просто мог бы оживить это :)

Посмотрите наLEAP ORM для Кохана, Работает с кучей баз данных, включаяDB2, изморось, жар-птица, MariaDBSQL & # xA0; Сервер,MySQLOracle,PostgreSQL, а такжеSQLite, С помощью простой функции автозагрузки он может работать практически с любым фреймворком PHP. Исходный код включенGitHub вhttps://github.com/spadefoot/kohana-orm-leap, Вы можете оформить заказУчебные пособия LEAP онлайн.

Библиотека ORM работает с нецелыми первичными ключами и составными ключами. Соединения управляются через пул соединений с базой данных, и он работает с необработанными SQL-запросами. ORM даже имеет построитель запросов, который делает построение операторов SQL очень простым.

Я только начал сKohanaи кажется наиболее близким к Ruby on Rails без вызова всей сложности нескольких файлов конфигурации, как сприводить в движение.

 27 мая 2011 г., 05:53
Я также согласен с тем, что Kohana - это фреймворк, наиболее похожий на RoR в мире PHP. Все, что ему не хватает, - это строительные леса, и с поддержкой CLI в KO3 это просто вопрос того, как кто-то закатывает рукава и делает это.

MicroMVC имеет размер 13 КБORM это зависит только от 8 & # xA0; КБкласс базы данных, Он также возвращает все результаты в виде самих объектов ORM и использует позднюю статическую привязку, чтобы избежать встраивания информации о таблице текущего объекта и метаданных в каждый объект. Это приводит к самым низким накладным расходам ORM.

Работает сMySQL, PostgreSQL, а такжеSQLite.

PHP ORM Faces Для расширения PDO. УвидетьPHP Faces Framework.

$urun = new Product();
$urun->name='CPU'
$urun->prince='124';
$urun->save();
 10 янв. 2011 г., 17:04
1. Сайт турецкий; 2. Ваш код ничем не отличается от кода, который вы использовали бы, например, с. Учение.

Проверять, выписыватьсяАутлет ОРМ, Он проще, чем Propel и Doctrine, и работает аналогично Hibernate, только с большей чувствительностью к PHP.

 09 авг. 2011 г., 21:54
Я пробовал это (1.0 RC1), и оно было очень глючным даже в основной функциональности. И да, есть много конфигурации для записи. Я не рекомендую это.
 16 июл. 2011 г., 01:12
Розетка очень тяжелая.
 16 июн. 2010 г., 01:32
Я попробовал это. Пришлось указывать одинаковые свойства объекта в 3 местах - конфиг, модель и схема базы данных. Это большая работа по внедрению ORM IMO.

Вы должны проверитьИдиорм и Париж.

Axon ORM является частьюОбезжиренный каркас - это показывает картограф на лету. Нет генераторов кода. Нет глупого XML /YAML конфигурационные файлы. Он читает схему базы данных непосредственно из бэкэнда, поэтому в большинствеCRUD операции, которые вам даже не нужно расширять базовую модель. Работает со всеми основнымиPDOподдерживаемые движки баз данных:MySQL, SQLite, SQL & # xA0; сервер/ Sybase, Oracle,PostgreSQL, так далее.

/* SQL */
CREATE TABLE products (
    product_id INTEGER,
    description VARCHAR(128),
    PRIMARY KEY (product_id)
);

/* PHP */
// Create
$product=new Axon('products'); // Automatically reads the above schema
$product->product_id=123;
$product->description='Sofa bed';
$product->save(); // ORM knows it's a new record

// Retrieve
$product->load('product_id=123');
echo $product->description;

// Update
$product->description='A better sofa bed';
$product->save(); // ORM knows it's an existing record

// Delete
$product->erase();

Более того, плагин и сопровождающий уровень доступа к данным SQL так же легки, как и фреймворк: 14 & # xA0; KB (Axon) + 6 & # xA0; KB (SQLdb). Обезжиренный - всего 55 КБ.

 29 дек. 2011 г., 02:24
Fat-Free также имеет NoSQL ORM для MongoDB и плоских файлов
 11 апр. 2011 г., 19:45
для параноиков альтернативный синтаксис$product->load(array('product_id=:id',array(':id'=>123)));
 11 апр. 2011 г., 12:57
Меня всегда беспокоит, когда я вижу что-то вроде$product->load('product_id=123') в примере.

смотреть наhttp://code.google.com/p/lworm/ , Это действительно простая, но мощная и легкая система ORM для PHP. Вы также можете легко расширить его, если хотите.

ПытатьсяКрасный боб, его требует:

No configuration No database (it creates everything on the fly) No models etc.

Он даже делает все блокировки и транзакции для вас и отслеживает производительность в фоновом режиме. (Черт! Он даже собирает мусор ....) Лучше всего ... вам не нужно писать ни одной ... строки кода ... Иисусэтот, Слой ORMСпас меня задница!

 18 мая 2010 г., 10:15
Очень хорошая находка. Я очень впечатлен этим ORM по меньшей мере
 02 авг. 2010 г., 17:19
 27 мар. 2012 г., 05:09
+1 +1 +1 +! +! !!!! ... Иисус, я прочитал первую часть документации, и это заставило меня сделать зловещий смех диктатора, и я уже загружаю это!
 15 февр. 2010 г., 19:15
redbean - лучший уровень абстракции базы данных, с которым я когда-либо работал. не "один из лучших" - лучшее.
 17 нояб. 2011 г., 10:44
Сравните RedBean с Доктриной:stackoverflow.com/questions/8063640/redbean-vs-doctrine

Еще один отличный PHP ORM с открытым исходным кодом, который мы используемPHPSmartDb, Он стабилен и делает ваш код более безопасным и чистым. Функциональность базы данных в ней - самая простая, которую я когда-либо использовал с PHP 5.3.

Мой друг Кин и я улучшили более раннюю версию ORM, которую он написал до PHP 5.3. По сути, мы перенесли Ruby on Rails & apos;Активная запись в PHP. В нем по-прежнему отсутствуют некоторые ключевые функции, которые нам нужны, такие как транзакции, поддержка составного первичного ключа, еще несколько адаптеров (сейчас работают только MySQL и SQLite 3). Но мы очень близки к тому, чтобы закончить это дело. Вы можете взглянуть наPHP ActiveRecord с PHP 5.3.

Agile Toolkit имеет собственную уникальную реализацию ORM / ActiveRecord идинамический SQL.

Вступление:http://agiletoolkit.org/intro/1

Синтаксис (активная запись):

$emp=$this->add('Model_Employee');
$emp['name']='John';
$emp['salary']=500;
$emp->save();

Синтаксис (динамический SQL):

$result = $emp->count()->where('salary','>',400)->getOne();

Хотя Dynamic SQL и Active Record / ORM можно использовать напрямую, Agile Toolkit дополнительно интегрирует их с пользовательским интерфейсом иJQuery UI, Это похоже наJSF но написано на чистом PHP.

$this->add('CRUD')->setModel('Employee');

Это будет отображать AJAXifiedCRUD с для сотрудника модели.

ПытатьсяDoctrine2, Это, вероятно, самый мощный инструмент ORM для PHP. Я упоминаю об этом отдельно от Doctrine 1, потому что это совершенно другая часть программного обеспечения. Он был переписан с нуля, все еще находится на стадии бета-тестирования, но теперь он пригоден для использования и разрабатывается.

Это очень сложный ORM, но хорошо продуманный. Много магии из оригинальной Доктрины 1 исчезло. Это обеспечивает полное решение, и вы можетенаписать свой собственный ORM поверх Doctrine2 или используйте только один из егослои.

 20 сент. 2010 г., 12:16
Единственная проблема, которую я могу придумать с Doctrine2, заключается в том, что он зависит от PHP 5.3 и выше.
 21 сент. 2010 г., 15:33
@jblue: это не проблема, это особенность ;-). Большие библиотеки, такие как Doctrine, нуждаются в пространствах имен.
 08 сент. 2011 г., 10:30
& # x201C; Много магии из оригинальной Доктрины 1 исчезло. & # x201D; & # X2014; В каком отношении это положительно?

Бразильский ORM:http://www.hufersil.com.br/lumine, Работает с PHP 5.2+. На мой взгляд, это лучший выбор для португальцев и бразильцев, потому что он имеет простую для понимания документацию и множество примеров для скачивания.

 12 окт. 2010 г., 13:10
Да, я работал с ним в течение некоторого времени. Flourishlib великолепен, но у ORM еще есть над чем поработать. Работа с таблицами соединений, которые имеют дополнительные свойства или внешние ключи, создание новых объектов может быть немного утомительным. Работать с простыми моделями очень просто. Взгляните на Repose ORM или Outlet для альтернативного ORM для PHP.

Попробуйте PHP ADOdb.

Я не могу сказать, что это лучшее, потому что я не использовал другие. Но это быстро, это поддерживаетMemcached и кеширование.

И это быстрее, чемZend Framework'ы DB / Select.

 20 сент. 2010 г., 12:14
adodb больше подходит для Thin Model / Fat Controller, что, как правило, не очень хорошая вещь.
 17 апр. 2011 г., 03:18
ADOdb - это DAL, а не ORM
 06 мая 2012 г., 18:40
ADOdb имеет ORM (но не просто ORM). Как правило, это действительно отличное решение, оно работает намного лучше, чем Zend для БД (и, будучи более медленным, чем ADOdb, Zend DB имеет только ограниченную поддержку JOIN), оно поддерживает автоматическое экранирование с параметризацией (в отличие от, скажем, Doctrine) многих различных бэкэндов БД и имеет хороший расширяемый дизайн кэширования с очень простой интеграцией с memcache. Я не думаю, что совершенно точно можно сказать, что он подходит для «тонкой модели / жирового контроллера»; реализация (вы можете сделать это или нет, но дизайн ADOdb не поддерживает тот или иной путь).

Смотреть вдоктрина.

Доктрина 1.2 реализует Active Record.Учение 2+ является DataMapper ORM

Кроме того, проверитьраспатор, Он основан на шаблоне Data Mapper.

Кроме того, взгляните наDataMapper против активной записи.

 12 авг. 2011 г., 21:39
2-я ссылка ничего не показывает.

Доктрина - это, вероятно, ваш лучший выбор. До Доктрины,DB_DataObject была по существу единственной другой утилитой, которая была с открытым исходным кодом.

 28 сент. 2010 г., 04:10
Неверная информация

У меня был большой опытИдиорм и Париж, Idiorm - это небольшая простая библиотека ORM. Paris - это одинаково простая реализация Active Record, построенная на Idiorm. Это для PHP 5.2+ с PDO. Это идеально, если вы хотите что-то простое, что вы можете просто добавить в существующее приложение.

Если вы ищете ORM, который реализует парадигму Data Mapper, а не Active Record, то я настоятельно рекомендую вам взглянуть наGacelaPHP.

Особенности Gacela:

Data mapper Foreign key mapping Association mapping Dependent mapping Concrete table inheritance Query object Metadata mapping Lazy & eager loading Full Memcached support

Другие решения ORM слишком раздуты или имеют обременительные ограничения при разработке чего-либо удаленно сложного. Gacela устраняет ограничения подхода активной записи, применяя шаблон сопоставления данных, одновременно сводя к минимуму раздувание, используяPDO для всех взаимодействий с базой данных и Memcached.

Я сейчас работаю надphpDataMapper, который представляет собой ORM, разработанный для простого синтаксиса, подобный проекту Datamapper в Ruby. Он все еще находится на ранней стадии разработки, но он прекрасно работает.

Есть только два хороших:доктрина а такжеприводить в движение, Мы поддерживаем доктрину, и она хорошо работает сSymfony, Однако, если вы ищете поддержку баз данных, помимо основных, вам придется написать свой собственный код.

 26 июн. 2010 г., 18:33
Propel также хорошо работает с Symfony, включая Symfony2.
 02 сент. 2011 г., 04:49
Propel довольно хорош по стандартам php. Он генерирует довольно чистый код, совместимый с IDE, с геттерами и сеттерами и очень чистой системой абстракций Criteria для запросов.

Ваш ответ на вопрос