【发布时间】:2019-04-02 09:01:53
【问题描述】:
我正在开发 symfony 4.2 应用程序。我有实体 Meal 和 OrderItem。 OrderItem 应该有所有的 Meal 实体属性 + 一些它自己的。问题在于 ManyToOne 关系列。它没有添加到 order_item 表中。
https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/inheritance-mapping.html 我尝试遵循“类表继承”和“映射超类”。 “映射超类”的示例不会将 $mappedRelated1 添加到 EntitySubClass 。 “类表继承”中的示例从 Meal 类中删除了所有其他扩展字段,并在 Meal 表中添加了某种“dtype”列。
/**
* @ORM\Entity(repositoryClass="App\Repository\OrderItemRepository")
*/
class OrderItem extends Meal
{
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Order", inversedBy="orderItems")
*/
private $order;
/**
* @ORM\Column(type="integer")
* @Assert\NotBlank
* @Assert\Type("string")
*/
private $amount;
}
/**
* @ORM\Entity(repositoryClass="App\Repository\MealRepository")
*/
class Meal
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255)
* @Assert\NotBlank
* @Assert\Type("string")
*/
protected $name;
/**
* @ORM\Column(type="float")
* @Assert\NotBlank
* @Assert\Type("float")
*/
protected $price;
/**
* @ORM\Column(type="string", length=255)
* @Assert\Image(
* mimeTypes={"image/jpeg", "image/png"}
* )
*/
protected $image;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Menu", inversedBy="meals")
*/
protected $menu;
}
我希望在“order_item”表中有“menu_id”列,这与菜单实体有关。
我知道我可以将 Meal 中的所有属性复制到 OrderItem,但这听起来不对。
编辑:
Meal 和 OrderItem 都应该可以拥有它的实例。
【问题讨论】: