2013-08-04 195 views
1

我正在使用Doctrine的項目。所以我開始學習Doctrine並寫簡單的測試,並且一開始就卡住了。之前我已經開發了很多cakePHP應用程序,並且我有關於蛋糕烘焙的好主意。DOCTRINE:從Mysql數據庫生成模型

我有一個測試MySQL數據庫和2個表中。我想要生成所有的模型類,並且我想將它們包含在我的MVC應用程序的控制器中以提交給CRUD。

我使用composer安裝了Doctrine,並在項目文件夾中找到了一個名爲/ vendor的文件夾。裏面bootstrap.php中創建的項目文件夾內創建一個新的bootstrap.php

/vendor 
/bootstrap.php 

代碼

// bootstrap.php 
require_once "vendor/autoload.php"; 

use Doctrine\ORM\Tools\Setup; 
use Doctrine\ORM\EntityManager; 

$paths = array("/path/to/entities-or-mapping-files"); 
$isDevMode = false; 

// the connection configuration 
$dbParams = array(
    'driver' => 'pdo_mysql', 
    'user' => 'root', 
    'password' => '', 
    'dbname' => 'test', 
); 

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode); 
$em = EntityManager::create($dbParams, $config); 

我看到有一個叫Doctrine_Core :: generateModelsFromDb在舊版本的方法。

我只想基本的模型開始,並想知道如何將它們包含在其他PHP文件中的CRUD。

PS:我已經嘗試了幾個例子在網絡上,但無法做到正確。還閱讀文檔,但我錯過了一些東西。

+0

模型不是類或對象。它絕對不是和數據庫表的抽象。模型是您應用程序中的**圖層**。 –

+0

對,我可能不得不重構我的問題。我想從我的Mysql數據庫創建實體或模型類 –

回答

5

我知道你想從數據庫中生成一組實體類和映射信息。使用Doctrine,您需要實體類和它們的映射信息。映射信息基本上是一堆.yml或.xml文件。這兩件事都可以使用Doctrine提供的工具從數據庫中生成。這通常在項目開始時進行一次。根據映射信息,Doctrine可以自動生成您可以在您的代碼中使用的PHP類(例如,保留實體)。映射信息也可以在類中添加爲僞註釋,但我沒有經驗,所以我不會介入。

你要找的命令是

php doctrine orm:convert-mapping --from-database yml /path/to/mapping-path-converted-to-yml 

這是假設你已經配置學說已經訪問你的數據庫。

一旦你做到了這一點,你可以用

php doctrine orm:generate-entities 

這產生了實體應創建用於CRUD操作的類。要使用這些類,只需將它們包含在代碼中,然後使用EntityManager對象對其進行操作即可。逆向工程

更多信息可以在這裏找到:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/tools.html#reverse-engineering

順便說一句,如果你有一個MySQL工作臺文件的模式有可以生成實體類和它的映射信息的腳本。

相關問題