在Doctrine 2中定义实体的最佳实践是什么

时间:2012-03-08 09:52:30

标签: php doctrine-orm

我想直接建模我的数据库,而不是通过Doctrine。定义我的实体的最佳方法是什么?

据我所知,如果我从数据库创建一个实体,我无法对其进行任何更改,因为每当我更改数据库时它都会重写。

可以像这样定义

<?php
/* entity code generated */
class MyEntityBase
{
    private $id;
    private $title;

    function getTitle()
    {
        return $this->title()
    }
}

class MyEntity extends MyEntityBase
{
    function getTitle()
    {
        return trim($this->title());
    }
}

我选择这样定义 你好。我选择像这样定义

class Article
{
    /** @Id @Column(type="integer") @GeneratedValue */
    private $id;

    /** @Column(type="string") */
    private $title;


    function setTitle($title)
    {
        $this->title = $title;
    }

    function __construct() {
//        $this->comments = new ArrayCollection();
    }

}

$article = $em->find('Article', 1);

1 个答案:

答案 0 :(得分:2)

像这样定义你的实体没有任何问题,虽然我会建议使用doctrine使用的映射功能,因为这样可以更容易地处理关系。

您是否选择使用DocBlock注释或在YAMLXML中对模型进行注释并不会产生太大影响。重要的是你要注释他们描述你的模型,Doctrine可以做他们设计的聪明的东西(ORM)。

在模型中描述您的数据库结构并不需要您实际将其与数据库服务器同步,它只是一种学说知道实体具有哪些属性和方法的方式,也可以选择还可以将模型与数据同步,反之亦然。