如何设计Doctrine 2实体

时间:2017-05-04 11:51:16

标签: mysql doctrine-orm doctrine

我有两个MySQL表(newsnews_lng)。新闻表content idfrom_dateto_dateleading_image字段。 news_lng表包含idnews_idlngtitlebody字段。

news
id | from_date  | to_date    | leading_image
1  | 2017-05-01 | 0000-00-00 | test.jpg

news_lng
id | news_id | lng   | title | body
1  | 1       | en_GB | test  | test body
2  | 1       | en_US | test  | test content

如何设计学说2实体?

1

/**
 * @ORM\Entity(repositoryClass="\Admin\Repository\NewsRepository")
 * @ORM\Table(name="news")
 */
class News {
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(name="id")
     */
    protected $id;
    /**
     * @ORM\Column(name="from_date")
     */
    protected $fromDate;
    /**
     * @ORM\Column(name="to_date")
     */
    protected $toDate;
    /**
     * @ORM\Column(name="leading_image")
     */
    protected $leadingImage;
    /**
     * @ORM\OneToMany(targetEntity="\Admin\Entity\NewsLng", fetch="EAGER", mappedBy="news_id")
     */
    private $translations;
    public function __construct() {
        $this->translations = new ArrayCollection();
    }

    // getters and setters ...//
}

/**
 * @ORM\Entity
 * @ORM\Table(name="news_lng")
 */
class NewsLng {
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(name="id")
     */
    protected $id;
    /**
     * @ORM\ManyToOne(targetEntity="\Admin\Entity\News", inversedBy="translations", fetch="EAGER")
     * @ORM\JoinColumn(name="news_id", referencedColumnName="id")
     */
    protected $news_id;
    /**
     * @ORM\Column(name="lng")
     */
    protected $lng;
    /**
     * @ORM\Column(name="title")
     */
    protected $tile;

    /**
     * @ORM\Column(name="body")
     */
    protected $body;

    // getters and setters ...//
}
  1. 或者我必须使用doctrine 2 Class Table Inheritance?
  2. 学说2中的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

在您的情况下使用关系是适当的解决方案。表继承是为其他东西设计的。