標籤:

在 PHP 領域裡,有哪些 ORM 比較好用?


MySQL的話 推薦 Laravel 的 Eloquent ORM,

MongoDB 推薦下我自己的 purekid/mongodm · GitHub


Best Available PHP ORM Libraries


我自賣自誇一下我寫的DataMapper,目前沒有文檔,如果兄台喜歡讀代碼的話,可以一觀

源代碼:

Lysine/datamapper.php at master · yeaha/Lysine · GitHub

示例:

Lysine/user.php at master · yeaha/Lysine · GitHub

======== UPDATE ========

新版本在這裡 GitHub - yeaha/owl-orm


很喜歡 Doctrine,如果不太在意性能的話。很適合OA 啊、企業應用等業務邏輯複雜但對性能沒有極端要求的情景。

吐槽一下,我不喜歡 Active Record 類型的 ORM 主要是我實在無法理解一個 Model 竟然都繼承自一個可直接操作資料庫的基類。一個業務模型跟資料庫有毛關係啊? 我的數據可能來自或持久化到四面八方(資料庫、文件、緩存、第三方API等等),最多也是組合一個倉庫類到自身而不是直接繼承某個資料庫類。DataMapper 才是解決之道。


Eloquent


大的功能多的話就用laravel的 Eloquent ORM

小的就用medoo吧 Medoo - 高效的輕量級PHP資料庫框架, 提高開發效率!


Laravel 的 Eloquent ORM


推薦一個 lingorm

PHP ORM框架LingORM介紹及使用文檔


RedBeanzero config

require "rb.php";
R::setup();

$post = R::dispense("post");
$post-&>text = "Hello World";

$id = R::store($post); //Create or Update
$post = R::load("post",$id); //Retrieve
R::trash($post); //Delete


推薦一個短小精悍的ActiveRecord庫,lloydzhou/activerecord · GitHub, 可以實現類似Yii的relation的效果。文檔地址:http://lloydzhou.github.io/activerecord/

class User extends ActiveRecord{
public $table = "user";
public $primaryKey = "id";
public $relations = array(
"contacts" =&> array(self::HAS_MANY, "Contact", "user_id")
);
}
class Contact extends ActiveRecord{
}

$user = new User();
// find one user
var_dump($user-&>notnull("id")-&>orderby("id desc")-&>find());
echo "
Contact of User # {$user-&>id}
";
// get contacts by using relation:
// "contacts" =&> array(self::HAS_MANY, "Contact", "user_id"),
var_dump($user-&>contacts);


推薦閱讀:

為什麼很多人都喜歡 Django 的 ORM 而不是 SQLAlchemy,是因為簡單嗎?

TAG:PHP | ORM |