數據庫我敢用Django的。使用Django,您可以爲ORM定義模型,並根據模型生成/更改數據庫本身以存儲數據。腓奧姆與模型
在PHP我正在尋找一個類似的解決方案。學說似乎是標準的PHP ORM,但是,據我所看到的,你寫的DB和然後重視它,或者腳本創建數據庫,然後產生模型並開始工作。
是否有一步模型定義爲數據庫創建與Doctrine或另一個php orm解決方案?謝謝。
數據庫我敢用Django的。使用Django,您可以爲ORM定義模型,並根據模型生成/更改數據庫本身以存儲數據。腓奧姆與模型
在PHP我正在尋找一個類似的解決方案。學說似乎是標準的PHP ORM,但是,據我所看到的,你寫的DB和然後重視它,或者腳本創建數據庫,然後產生模型並開始工作。
是否有一步模型定義爲數據庫創建與Doctrine或另一個php orm解決方案?謝謝。
你只有在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。
不是100%相同的,但我用的Propel(http://propel.phpdb.org/trac/)需要在PHP ORM的時候。它已經存在了一段時間,並且已經相當成熟。它也是Symfony框架的一部分。處理並不像Django那麼好,但仍然非常方便。
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();
您也可以嘗試db.php中的ORM,只有一個方法:
$database->update()
它創建數據庫/表/字段或這裏描述他們更新到最近的變化:
http://dbphp.net/update-table-structures-or-updatecreate-new-fields/
關於db.php的一個有趣的事實是它只是一個非常直觀的api文件,並且不依賴其他庫,同時提供了完整的orm功能,我甚至在我的重載電子商務項目中使用它CTS。
它是否允許創建模型的一步式解決方案,並相應地創建/更改數據庫? – pistacchio 2009-12-13 10:27:50
它爲您創建數據庫和表格。因此,你不必打擾數據庫的東西。獨立驅動本身並不是一個完整的解決方案。爲此,您可能需要查看http://www.symfony-project.org/ - 利用並自動化Propel的PHP框架。在那裏你通過命令行生成你的應用和模型,並讓它建立你的分貝。 但是,大多數時候我都單獨使用Propel並將代碼粘貼到它上面,因爲它的思路非常好,我不介意做一兩個小的額外步驟。 – markmywords 2009-12-13 10:31:02