我想要的是获得产品,产品应该是这样的:
{
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/