web-dev-qa-db-ja.com

良いPHP ORMライブラリ?

PHP用の良いオブジェクトリレーショナルマッピングライブラリはありますか?

PDO /ADOは知っていますが、ドメインモデルとリレーショナルモデルとの実際のマッピングではなく、データベースベンダー間の違いを抽象化したものにすぎないようです。私はPHPライブラリが似たように機能することを探しています Hibernate はJavaに対して、そしてNHibernateは.NETに対して行います。

269
sgibbons

Doctrine を調べてください。

Doctrine 1.2 はActive Recordを実装しています。 Doctrine 2 + はDataMapperのORMです。

また、 Xyster を調べてください。これはデータマッパーパターンに基づいています。

また、 DataMapper vs. Active Record もご覧ください。

113
Ian P

RedBean を試してみてください。

  • 設定なし
  • データベースなし(それはすべてをその場で作成します)
  • モデルなし
  • 等.

それはあなたのためにすべてのロックとトランザクションさえも行い、バックグラウンドでパフォーマンスを監視します。 (ちょっと!それはガベージコレクションさえ行います....)何より...あなたは1つの...コード行を書く必要はありません... Jesus thisORM layer 、私のお尻を救った!

99
winterswk

2つだけ良いものがあります: DoctrinePropel 。私たちはDoctrineを好みます、そしてそれは Symfony とうまく働きます。ただし、メインのサポート以外にデータベースサポートを探している場合は、独自のコードを作成する必要があります。

45
Ilya Kochetov

Axon ORMは Fat-Free Framework の一部です - それはオンザフライマッパーを備えています。コードジェネレータはありません。愚かなXML/ YAML 設定ファイルはありません。データベーススキーマをバックエンドから直接読み込むので、ほとんどの場合 CRUD 操作ではベースモデルを拡張する必要すらありません。 PDO - サポートされているすべてのデータベースエンジンで動作します。 MySQLSQLiteSQL Server /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データアクセスレイヤは、フレームワークと同じくらい軽量です。14KB(Axon)+ 6 KB(SQLdb)です。無脂肪はわずか55 KBです。

33
bcosca

私は自分でPork.dbObjectを開発してきました。 (単純なPHP ORMとActive Recordの実装)主な理由は、ほとんどのORMが重すぎることに気付くことです。

Pork.dbObejctの主な考え方は、軽量でセットアップが簡単であるということです。 XMLファイルの束はありません。コンストラクタ内でバインドするための1つの関数呼び出しと、別のdbObjectへの関係を定義するためのaddRelationまたはaddCustomRelationだけです。

見てみましょう: Pork.dbObject

28
SchizoDuckie

Doctrine2 を試してください。それはおそらくPHPのための最も強力なORMツールです。私はDoctrine 1とは別に言及しています。なぜならそれは完全に異なるソフトウェアだからです。最初から書き直され、まだベータ段階ですが、現在使用可能で開発されています。

非常に複雑なORMですが、うまく設計されています。オリジナルのDoctrine 1からの魔法がたくさん消えました。それは完全な解決策を提供します、そしてあなたは Doctrine2の上にあなた自身のORMを書くことができます またはその の一つだけを使うことができますレイヤー .

22
Tom Pažourek

私は Kohana から始めましたが、 Propel のように複雑な複数の設定ファイルを呼び出すことなく、Ruby on Railsに最も近いようです。

13
Zak

チェックアウト アウトレットORM 。これはPropelやDoctrineよりも単純で、Hibernateと同じように機能しますが、PHPのような感じがするだけです。

12
Alvaro

私は本当に好きです Propelここ あなたは概要を得ることができます、 documentation はかなり良いです、そしてあなたはそれを得ることができますPEARまたはSVN。

動作するPHP 5インストールと Phing クラスの生成を開始するためだけに必要です。

11
CMS

PHPライブラリにORM関連のクラスが見つかりました 繁栄

8
VDVLeon

あなたがチェックアウトする必要があります イディオムとパリ

6
th3mus1cman

dORM、PHP 5のオブジェクトリレーショナルマッパー にショットを渡します。あらゆる種類の関係(1対1)、(1対多)、(多対多)、およびデータ型をサポートしています。それはまったく目立たない:コード生成やクラス拡張は必要ない。私の意見では、それはそこにあるどのORMよりも優れており、DoctrineとPropelが含まれています。ただし、まだベータ版であり、今後数ヶ月の間に大幅に変更される可能性があります。 http://www.getdorm.com

それはまた非常に小さな学習曲線を持っています。使用する主な3つの方法は次のとおりです。

<?php 
$object = $dorm->getClassName('id_here');
$dorm->save($object);
$dorm->delete($object);
6
Olivier Lalonde

私は現在 phpDataMapper に取り組んでいます。これはRubyのDatamapperプロジェクトのような単純な構文を持つように設計されたORMです。まだ初期の開発段階にありますが、うまく機能します。

4
Vance Lucas

繁栄ライブラリのORM を試してみました。

4
eaguilar

私の友人のKienと私は、彼がPHP 5.3より前に書いた以前のバージョンのORMを改良しました。私たちは基本的にRuby on Railsの Active Record をPHPに移植しました。トランザクション、複合主キーのサポート、その他いくつかのアダプタ(MySQLとSQLite 3のみが現在動作している)など、まだ必要としているいくつかの重要な機能が欠けています。しかし、私たちはこれを完成させることに非常に近いです。 PHP ActiveRecord with PHP 5.をご覧ください。

3
Jacques Fuentes

PHP ADOdbを試してください。

私は他の人を使ったことがないので、それが最高だとは言えません。しかしそれは高速で、 Memcached とキャッシングをサポートしています。

そしてそれはずっと速いです Zend Framework's DB/Select。

3
Salam Fall

私は Idiorm and Paris で素晴らしい経験をしました。 Idiormは小さくてシンプルなORMライブラリです。 Parisは、Idiorm上に構築された同様に単純なActive Recordの実装です。 PDOでPHP 5.2以降に対応しています。既存のアプリケーションにドロップするだけの簡単なものが必要な場合に最適です。

3
Sander Marechal

PHP 5.3がリリースされるまでは、優れたORMを期待してはいけません。これはPHPのOO制限です。

3
knoopx

KohanaのLEAP ORM をご覧ください。 DB2DrizzleFirebirdMariaDB 、SQL Serverなど、多数のデータベースと連携できます。 MySQL 、Oracle、 PostgreSQL 、および SQLite 。単純なオートロード機能を使えば、ほとんどすべてのPHPフレームワークで動作します。ソースコードは GitHub at https://github.com/spadefoot/kohana-orm-leap にあります。あなたはチェックアウトすることができます LEAPのチュートリアル オンライン。

ORMライブラリは、非整数の主キーと複合キーを処理します。接続はデータベース接続プールを介して管理され、生のSQLクエリで機能します。 ORMには、SQL文の作成を非常に簡単にするクエリービルダーもあります。

3
Matthew

冒険好きなら Repose をチェックしてください。 Outlet のように、 Hibernate をモデルにしています。

それはまだ開発の非常に早い段階ですが、これまでのところドメインモデルに対する唯一の制限はクラスがfinalとマークされていないこととプロパティがprivateとマークされていないことです。 PHP> = 5.3になったら、プライベートプロパティのサポートも実装しようと思います。

2
Beau Simensen

私はminiOrmに取り組んでいます。 Object ModelとMySQL Abstraction Layerを可能な限り簡単に使用するための、ちょっとしたミニORM。それがあなたを助けるかもしれないことを望んでいる: http://jelnivo.fr/miniOrm/

2

ブラジルのORM: http://www.hufersil.com.br/lumine 。 PHP 5.2以降で動作します。私の意見では、それはポルトガル語とブラジルの人々にとって最良の選択です、それはそれが理解しやすいドキュメンテーションとダウンロードのための多くの例を持っているので。

2
Paulo Araujo

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";
}
2
Charlie Chai

MicroMVCには13 KB ORM があり、これは8 KB データベースクラス にのみ依存しています。また、すべての結果をそれ自体ORMオブジェクトとして返し、最新の静的バインディングを使用して、現在のオブジェクトのテーブルとメタデータに関する情報が各オブジェクトに埋め込まれないようにします。これにより、最も安いORMオーバーヘッドが発生します。

MySQLPostgreSQL 、および SQLite で動作します。

2
Xeoncross

特にActive RecordではなくData Mapperパラダイムを実装するORMを探しているのであれば、 GacelaPHP をご覧になることを強くお勧めします。

ガセラの特徴:

  • データマッパー
  • 外部キーマッピング
  • 関連マッピング
  • 依存マッピング
  • 具体的なテーブルの継承
  • クエリオブジェクト
  • メタデータマッピング
  • レイジー&イーガーローディング
  • フル Memcached サポート

他のORMソリューションでは、リモートで複雑なものを開発する場合、膨大すぎるか、または面倒な制限があります。 Gacelaは、データベースとMemcachedとのすべてのやりとりに PDO を使用して膨らみを最小限に抑えながらデータマッパーパターンを実装することで、アクティブレコードアプローチの制限を解決します。

2
Noah Goodrich

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();

動的SQLとActive Record/ORMは直接使用できますが、Agile Toolkitはそれらをユーザーインターフェースおよび jQuery UI とさらに統合します。これは JSF と似ていますが、純粋なPHPで書かれています。

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

これはAJAXified CRUD with Employeeモデルを表示します。

2
romaninsh

PHP ORM Faces for PDOエクステンション。 PHP Faces Frameworkを参照してください。

$urun = new Product();
$urun->name='CPU'
$urun->prince='124';
$urun->save();
2
Kurt

私たちが使っているもう一つの素晴らしいオープンソースPHP ORMは PHPSmartDb です。それは安定しており、あなたのコードをより安全でクリーンにします。その中のデータベース機能は私が今まで使ったことがない最も簡単なPHP 5.3です。

1
Joe

Sado はシンプルなPHP ORMパッケージで、使いやすく、ビデオチュートリアルを提供しています。

1
Shay Anderson

本当に良い単純なORMは MyActiveRecord です。 MyActiveRecordのドキュメント 。私はそれをたくさん使ってきました、そしてそれはとても単純でよくテストされていると言うことができます。

1

http://code.google.com/p/lworm/ をご覧ください。これは、PHP用の本当にシンプルだが強力で軽量なORMシステムです。必要に応じて、簡単に拡張することもできます。

1
Faz

Doctrineはおそらくあなたの最善の策です。 Doctrineより前では、 DB_DataObject は基本的に他のオープンソースのユーティリティでした。

1
anon

Hibernate のようにORMを探しているなら、 PMO を見てください。

これは SOA アーキテクチャーに簡単に統合できます(開発するのはWebサービスクラスのみです)。

1
anonymous

PdoMap を試してください。ウィキペディアは、Hibernateに触発されたと主張しています。 Hibernateを使ったことがないので、:)と判断することはできませんが、他のORMよりも学習曲線がそれほど急峻ではなく、実装が簡単で高速で優れたORMであると私は経験から言えます。

1
Hydrino

QCubedフレームワークには素晴らしいORMが含まれています 。それはコード生成と足場に基づいています。リフレクションに基づいていて一般的に遅いActiveRecordとは異なり、コード生成ではデータベースに基づいてスケルトンクラスを作成し、後でそれらをカスタマイズできます。それは魅力のように働きます。

1
Alex Weinstein

シリアスORM を見ました。これは新しいORMであり、プロジェクトは開発段階にありましたが、次の段階では1.0バージョンでリリースされる予定です。

1
biancardi