为什么需要Doctrine映射元数据?

时间:2013-12-26 16:12:15

标签: php doctrine

它是为了什么?我可以省略吗?

我已经有了我的数据库架构,我不想在我的列定义中进行更改而忘记了Doctrine注释。

非常感谢

1 个答案:

答案 0 :(得分:0)

在Doctrine中有很多注释。他们做不同的事情。例如:

@Entity 告诉doctrine这个类是一个实体(数据库中的一个表)。例如,您可以使用其他注释来告诉doctrine表的名称。

<?php
/**
* @Entity
* @Table(name="users", indexes={@Index(name="search_idx", columns={"name", "email"})})
*/
class User

@Column 会告诉学说关于每个实体变量的信息(每个表格列)

/** @Column(type="string", length=120) */

您可以使用注释设置继承

/**
* @Entity(repositoryClass="Repository\Post")
* @Table(name="posts")
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"text"="Post","video"="VideoPost"})
*/

您可以使用它们来创建实体之间的关联

/**
* @OneToMany(targetEntity="Entity\Post", mappedBy="user")
*/
private $posts;

还有许多其他事情。其中一个简洁的功能是,在您定义了所有实体后,您可以使用doctrine tool创建表格,只需执行doctrine orm:schema-tool:create或通过doctrine orm:schema-tool:update --force更新它们。

此外,一旦您的实体关联,它就更容易访问所有实体及其关联。

一开始我并不真正理解为什么要使用注释,但是当我开始使用它们时,它使我的工作变得更容易。尝试浏览this ebook,这将使您更容易理解Doctrine及其用途。