我需要在Doctrine2中建模以下表格:
项目可以分为多个类别。一个类别可以有很多项目。重构数据(目前)不是一种选择,我没有设计架构。
建议使用连接表对这种多对多关联进行建模的方法是什么。 documentation似乎没有涵盖这个确切的案例,我很想听到其他人与Doctrine2和/或Symfony(2.4)做过类似的事情。
答案 0 :(得分:1)
创建两个实体:Item
和Category
:
<?php
namespace YourApplication\Bundle\DatabaseBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="Categories")
*/
class Category
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="Item", inversedBy="categories")
* @ORM\JoinTable(name="ItemsToCategories")
*/
protected $items;
public function __construct() {
$this->categories = new \Doctrine\Common\Collections\ArrayCollection();
}
}
<?php
namespace YourApplication\Bundle\DatabaseBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="Items")
*/
class Item
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="Category", mappedBy="items")
*/
protected $items;
public function __construct() {
$this->items = new \Doctrine\Common\Collections\ArrayCollection();
}
}
由于类别拥有项目,拥有项目属于,因此Category
将成为拥有方,Item
将是关系的反面。