Doctrine数据库关系,如何关联产品和产品属性

时间:2017-07-23 06:23:18

标签: php database symfony doctrine-orm doctrine

我使用的是symfony 3.0和doctrine orm 2.5,但是当关系产品和产品属性时,我有一些困难。

假设我有名为ad product product_attribute attribute 的数据库表。

首先,每个产品都可以包含许多 product_attributes

product_attribute 可以与许多产品相关联,但每个 product_id 都有唯一的属性和值。

属性表实际上是不可知的,并且不知道 product product_attribute 的存在,但 product_attribute 应该是存在的关系中的 attribute_id

我该怎么做?我尝试使用数据透视表" product_attribute"来创建产品和属性之间的关系,但这不会保留属性的值......

所需数据库结构的示例: enter image description here

1 个答案:

答案 0 :(得分:1)

你的问题有点模糊,没有代码。但是,如果您的产品持久存在,则意味着您致电该原则经理以保留该产品。这意味着你正在做这样的事情:

$this->getDoctrine()->getManager()->persist($product)

然后您可能添加了product_attribute和属性本身。要记住的关键是你必须将要保存的每个对象保存到数据库中,如下所示:

$this->getDoctrine()->getManager()->persist($product);
/* Add product attribute */
/* Add attribute to product attribute */
$this->getDoctrine()->getManager()->persist($productAttribute);
$this->getDoctrine()->getManager()->persist($attribute);
/* save to database */
$this->getDoctrine()->getManager()->flush();

您不能只持久保存孩子所需的父对象。