使用Symfony2 Doctrine2控制台/生成功能更改表?

时间:2012-04-12 02:58:12

标签: php mysql orm symfony doctrine-orm

我想弄清楚的是如何使用Sytrfony2和Doctrine2将新字段添加到表中。

我用它来初步创建实体:

php app/console doctrine:generate:entity --entity="MyMainBundle:ImagesTable" --fields="title:string(100) file:string(100)"

我用它来创建/更新数据库中的表:

php app/console doctrine:schema:update --force

现在,如果我想向ImagesTable实体添加新字段,是否可以使用console轻松实现,或者我必须手动编辑实体。我现在只是使用1个实体作为例子,但实际上,我正在改变许多实体;所以,必须有一种更简单的方法来做到这一点。

我一直在手动编辑它们以创建关系,所以如果有更简单的方法可以做到这一点,那就太好了。

我记得Symfony1.4更容易实现 - 我所要做的就是使用phpMyAdmin创建数据库/表,Symfony能够生成没有问题的模型。

我真的希望我在这里遗漏了一些东西,因为如果我必须为每次更改手动编辑每个实体,这将无效。

1 个答案:

答案 0 :(得分:1)

Doctrine生成器命令旨在帮助开发人员快速构建一个想法。它们通常不会生成生产就绪代码,需要检查代码以查看它是否包含您想要的内容。

您仍然可以在phpmyadmin中创建模型并使用Doctrine reverse engineering tools,但它也不会生成生产就绪代码,仅用于原型设计。

事先创建数据库/表并不能很好地与Doctrine2一起使用,因为表之间的基础关系可能与模型对象之间的关系不同。 ORM的重点在于在课堂上思考并让Doctrine为你完成剩下的工作。

Doctrine并不打算为您编写实体,它为您提供了构建数据模型的工具,您可以使用这些工具在Php中编写模型。

如果您不喜欢手工编写实体(这是所有使用doctrine的开发人员所做的),您可能需要查看RedbeanPHP,一个用于PHP的零配置ORM框架。它根据您使用的数据模型动态创建数据库表,列和索引。