Symfony2与dbal

时间:2012-03-02 01:09:53

标签: php symfony

我一直在谷歌搜索这个,但我找不到答案。我是Symfony的新手。在某些地方,我听说过schema.yml,你可以用它创建所有的表。但是在Symfony2中,我们究竟在哪里创建该文件?以下页面:http://symfony.com/doc/2.0/book/doctrine.html,实际上没有从Symfony页面回答这个问题及其问题。

是否有任何文件可以回答这个问题?对于Symfony1.x我听说你可以创建一个schema.yml文件,然后运行一个create shema命令来创建所有的表等。现在我可以创建数据库,但是如何创建表呢?我在Symfony2中如何定义它们?

1 个答案:

答案 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中数据库交互所需的其他映射信息和所有内容的地方。

的问候,
马特