The*_*777 33 php symfony doctrine-orm
我一直在我的网络服务器上玩Symfony,我一直在为我的数据库创建带有学说的实体.我想为这些实体中的一个添加一个列......我想做类似的事情:
php app/console doctrine:modify:entity
Run Code Online (Sandbox Code Playgroud)
现在我知道这个命令不存在,但有一种方法(不进行整个迁移)只需添加一个列.
PS我知道我可以打开php文件并在那里以文本方式添加列然后更新架构,但我将它分发给一些客户端,我喜欢更像"命令行"的方法.
P. *_*iro 73
实际上,使用Doctrine完全没有意义去做你建议的事情.
Doctrine是一种ORM(对象关系映射)工具.这意味着您要从PHP代码中抽象数据库,将数据库内容委托给Doctrine.学说在这方面做得很好.
由于您希望使用最新版本的模型更新您的客户/同行,因此您应该使用Doctrine Migrations(http://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html).这是管理数据库更新的方法.此外,它使您可以完全控制升级/降级数据库时的操作.例如,您可以在添加FK之前设置默认值.
在类上添加新属性的步骤应该是:
通过以下方式修改类:
Acme\MyBundle\Entity\Customer并添加您想要的属性;
Acme\MyBundle\Entity\Customer
或修改学说文件:
Acme/MyBundle/Resources/config/doctrine/customer.yml
运行console命令(它将在类中添加正确的set/get)
php app/console doctrine:generate:entities AcmeMyBundle:Customer
运行console命令
php app/console doctrine:migrations:diff
运行console命令(它将在app/DoctrineMigrations上放置一个新文件)
php app/console doctrine:migrations:migrate
当您部署新版本的代码时,您所要做的就是更新源代码并运行上面的命令.
对于Symfony 3:
通过以下方式修改类:
Acme\MyBundle\Entity\Customer并添加您想要的属性;
Acme\MyBundle\Entity\Customer
或修改学说文件:
Acme/MyBundle/Resources/config/doctrine/customer.yml
运行console命令(它将在类中添加正确的set/get)
php bin/console doctrine:generate:entities AcmeMyBundle:Customer
运行console命令(更新数据库)
php bin/console doctrine:schema:update --force
Sum*_*tel 10
在 Symfony 上的现有实体中添加新列。我有同样的问题。在我长期研究最佳解决方案之后。
Symfony 4 上的解决方案工作
例子:
已经在一个名称列中创建的博客实体在那里,我想添加描述列。这么简单的输入
php bin/console make:entity Blog
Run Code Online (Sandbox Code Playgroud)
运行此命令后,您要添加新列
您肯定要打开定义实体的PHP/XML/YML文件并在其中添加列.然后,您使用命令行并说
console doctrine:schema:update
Run Code Online (Sandbox Code Playgroud)
这样,您的实体定义与数据库同步,您的数据库也会更新.
归档时间: |
|
查看次数: |
60857 次 |
最近记录: |