我想要的是获得产品,产品应该是这样的:

{
  idProduct: 1,
  mainCategory: 1, // One of the categories is the main one.
  categories: [1, 2, 3],
  name: "John" //and so on.. the important thing is mainCategory...
}


我在YAML中使用Doctrine(在工作中),而且我知道我可以使用以下方法:

Product:
  type: entity
  manyToMany:
    groups:
      targetEntity: Category
      joinTable:
        name: products_categories
        joinColumns:
          product_id:
            referencedColumnName: id
        inverseJoinColumns:
          category_id:
            referencedColumnName: id


这将创建如下三个表(使用您的想象力xD):

**Product**
id

**Category**
id

**Category_Product**
id_product
id_category


但是我在产品中也需要mainCategory:

**Product**
id
main_category #this is important and my problem.


我能做些什么...我将一个对象示例放在json中,因为它易于理解...但是我正在使用PHP和Doctrine一起工作。.我猜是Doctrine2,我对此不确定。

在工作中,我已经在生产类别和产品之间建立了联系,但是却存在一对一的关系……如今,一个产品只能具有一个类别,我的问题是要改变,因为一个产品可以具有多个类别,但一个是主要类别。

提前致谢!!!

编辑:工作中有人建议我,第三个实体,但是我不确定。

最佳答案

也许您可以开箱即用,然后将mainCategory定义为一个ID。此ID可用于查找类别。而不是通过常规方法调用mainCategory,而是编写一个自定义函数,该函数将从此mainCategory ID中获取mainCategory对象。

是的,这是手动工作,但是学说本身并不支持您的情况。我担心的最重要的事情是确保mainCategory和Categories保持同步,这样您就永远不会拥有不在类别中的mainCategory。但是,如果始终在保存时检查mainCategory是否在Categories中,则可以轻松地做到这一点。

关于php - MySQL原则YAML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31466792/

10-10 03:22