它是为了什么?我可以省略吗?
我已经有了我的数据库架构,我不想在我的列定义中进行更改而忘记了Doctrine注释。
非常感谢
答案 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及其用途。