我一直在谷歌搜索这个,但我找不到答案。我是Symfony的新手。在某些地方,我听说过schema.yml,你可以用它创建所有的表。但是在Symfony2中,我们究竟在哪里创建该文件?以下页面:http://symfony.com/doc/2.0/book/doctrine.html,实际上没有从Symfony页面回答这个问题及其问题。
是否有任何文件可以回答这个问题?对于Symfony1.x我听说你可以创建一个schema.yml文件,然后运行一个create shema命令来创建所有的表等。现在我可以创建数据库,但是如何创建表呢?我在Symfony2中如何定义它们?
答案 0 :(得分:2)
在Symfony2中,您需要按实体定义映射实体。有三种不同的映射:注释,YAML和XML映射。
您链接的Symfony页面确实回答了这个问题的问题。例如,如果你到达Mapping section,你会看到这一段:
要使Doctrine能够执行此操作,您只需创建"元数据"或配置,告诉Doctrine产品类及其属性应该如何映射到数据库。此元数据可以通过多种不同格式指定,包括YAML,XML或直接在Product类中通过注释:
然后,如果你只是在下面,你会看到一个带有三个映射选项的选项卡式窗格。单击YAML选项卡,您将看到:
# src/Acme/StoreBundle/Resources/config/doctrine/Product.orm.yml
Acme\StoreBundle\Entity\Product:
type: entity
table: product
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
name:
type: string
length: 100
price:
type: decimal
scale: 2
description:
type: text
这段YAML是映射信息,位于此位置:src/Acme/StoreBundle/Resources/config/doctrine/EntityName.orm.yml
。应使用您自己的实体名称更改EntityName
部分。如果您的实体类是Product,则它将是Product.orm.yml
。您需要定义多个.yml
文件来定义多个实体。
下一步是填充数据库架构。假设您的配置正常,您将使用这些命令分别删除和创建数据库:
php console doctrine:database:drop --force
php console doctrine:database:create
然后,要填充架构,必须使用以下命令:
php console doctrine:schema:update --force
Doctrine的文档是通过Doctrine检查Symfony2中数据库交互所需的其他映射信息和所有内容的地方。
的问候,
马特