2013-08-04 145 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工作台文件的模式有可以生成实体类和它的映射信息的脚本。

相关问题