2009-12-13 34 views
1

數據庫我敢用Django的。使用Django,您可以爲ORM定義模型,並根據模型生成/更改數據庫本身以存儲數據。腓奧姆與模型

在PHP我正在尋找一個類似的解決方案。學說似乎是標準的PHP ORM,但是,據我所看到的,你寫的DB和然後重視它,或者腳本創建數據庫,然後產生模型並開始工作。

是否有一步模型定義爲數據庫創建與Doctrine或另一個php orm解決方案?謝謝。

回答

2

你只有在Django本身的ORM負責創建數據庫和所有的東西?

但是主義可以做setup automatically。我複製了最重要的部分:

// generate.php 

require_once('bootstrap.php'); 

Doctrine_Core::dropDatabases(); 
Doctrine_Core::createDatabases(); 
Doctrine_Core::generateModelsFromYaml('schema.yml', 'models'); 
Doctrine_Core::createTablesFromModels('models'); 

schema.yml包含YAML格式的表定義。

正如你已經在談論框架,你可能會看看Symfony這幾乎完成了你想要的東西,它提供了一個更簡單的接口(比Doctrine本身)。您可以使用Propel或Doctrine作爲ORM。

2

不是100%相同的,但我用的Propel(http://propel.phpdb.org/trac/)需要在PHP ORM的時候。它已經存在了一段時間,並且已經相當成熟。它也是Symfony框架的一部分。處理並不像Django那麼好,但仍然非常方便。

+1

它是否允許創建模型的一步式解決方案,並相應地創建/更改數據庫? – pistacchio 2009-12-13 10:27:50

+1

它爲您創建數據庫和表格。因此,你不必打擾數據庫的東西。獨立驅動本身並不是一個完整的解決方案。爲此,您可能需要查看http://www.symfony-project.org/ - 利用並自動化Propel的PHP框架。在那裏你通過命令行生成你的應用和模型,並讓它建立你的分貝。 但是,大多數時候我都單獨使用Propel並將代碼粘貼到它上面,因爲它的思路非常好,我不介意做一兩個小的額外步驟。 – markmywords 2009-12-13 10:31:02

0

phpDataMapper是專門爲此設計的。有沒有分佈殼或隨之而來CLI腳本,但你可以從你的代碼做到這一點:

安裝適配器:

try { 
    $adapter = new phpDataMapper_Adapter_Mysql('localhost', 'db', 'root', ''); 
} catch(Exception $e) { 
    echo $e->getMessage(); 
    exit(); 
} 

定義你的映射器/表中的字段:

class PostMapper extends phpDataMapper_Base 
{ 
    // Specify the data source (table for SQL adapters) 
    protected $_datasource = "blog_posts"; 

    // Define your fields as public class properties 
    public $id = array('type' => 'int', 'primary' => true, 'serial' => true); 
    public $title = array('type' => 'string', 'required' => true); 
    public $body = array('type' => 'text', 'required' => true); 
    public $status = array('type' => 'string', 'default' => 'draft'); 
    public $date_created = array('type' => 'datetime'); 
} 

使用適配器和設置表實例化映射器:

$postMapper = new PostMapper($adapter [, $adapterSlave]); 
$postMapper->migrate(); 

http://phpdatamapper.com/documentation/getting-started/

0

您也可以嘗試db.php中的ORM,只有一個方法:

$database->update()

它創建數據庫/表/字段或這裏描述他們更新到最近的變化:

http://dbphp.net/update-table-structures-or-updatecreate-new-fields/

關於db.php的一個有趣的事實是它只是一個非常直觀的api文件,並且不依賴其他庫,同時提供了完整的orm功能,我甚至在我的重載電子商務項目中使用它CTS。