Какова лучшая практика для определения сущностей в Учении 2? - PullRequest
0 голосов
/ 08 марта 2012

Я хочу моделировать свою базу данных напрямую, а не через 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 Ответ

2 голосов
/ 08 марта 2012

Нет ничего плохого в том, чтобы определять ваши сущности подобным образом, хотя я бы посоветовал использовать доктрину функции картирования, потому что она значительно облегчает работу с отношениями.

Если вы решите использовать аннотации DocBlock или аннотировать ваши модели в YAML или XML , это не имеет большого значения. Просто важно, чтобы вы их аннотировали и описывали ваши модели, чтобы Doctrine могла делать умные вещи, для которых она предназначена (ORM).

Кроме того, для описания структуры вашей базы данных в ваших моделях не требуется, чтобы вы фактически синхронизировали ее с сервером базы данных, это просто способ для доктрины узнать, какие свойства и методы есть у сущности, и при желании вы также можете синхронизировать свои модели с данные или наоборот.

...