這是之前開的一個問題的後續,參考連結
我使用的是 symfony2、donctrine,裡面關於資料庫的操作,全部用的實體,官方推薦建立表與表之間的關係,我做了一些更改後,發現一個實體無法設定兩個多對一的關係,下面是問題的描述與再現:
鑒於上一問題大家不推薦使用物理外健,我做了一些程式方面的處理:
刪除資料表物理外健;
在程式中設定相應的實體關聯;
簡單的ER圖更新:
商品屬性關聯表goods_and_attribute相對於商品表goods以及attributes是多對一的關係啊,所以我在實體檔案中添加以下程式:
#src/AppBundle/Resources/config/doctrine/GoodsAndAttribute.orm.ymlAppBundle\Entity\GoodsAndAttribute: type: entity table: goods_and_attribute id: ... fields: ... manyToOne: goods: targetEntity: Goods inversedBy: goodsAndAttribute joinColumn: name: goods_id referencedColumnName: id manyToOne: attribute: targetEntity: Attributes inversedBy: goodsAndAttribute joinColum: name: attribute_id referencedColumnName: id lifecycleCallbacks: { }
在查詢資料表的時候我發現只能得到其中一個關係的資訊:
$query = $em ->createQuery( 'SELECT ga FROM AppBundle:GoodsAndAttribute ga WHERE ga.id = 1');
在orm中如何關聯多個表,實現相應資訊的查詢?例如
$query = $em ->createQuery( 'SELECT ga, g, a FROM ApplicationSonataMallBundle:GoodsAndAttribute ga JOIN ga.goods g JOIN ga.attribute a WHERE ga.id = 1');
回複內容:
這是之前開的一個問題的後續,參考連結
我使用的是 symfony2、donctrine,裡面關於資料庫的操作,全部用的實體,官方推薦建立表與表之間的關係,我做了一些更改後,發現一個實體無法設定兩個多對一的關係,下面是問題的描述與再現:
鑒於上一問題大家不推薦使用物理外健,我做了一些程式方面的處理:
刪除資料表物理外健;
在程式中設定相應的實體關聯;
簡單的ER圖更新:
商品屬性關聯表goods_and_attribute相對於商品表goods以及attributes是多對一的關係啊,所以我在實體檔案中添加以下程式:
#src/AppBundle/Resources/config/doctrine/GoodsAndAttribute.orm.ymlAppBundle\Entity\GoodsAndAttribute: type: entity table: goods_and_attribute id: ... fields: ... manyToOne: goods: targetEntity: Goods inversedBy: goodsAndAttribute joinColumn: name: goods_id referencedColumnName: id manyToOne: attribute: targetEntity: Attributes inversedBy: goodsAndAttribute joinColum: name: attribute_id referencedColumnName: id lifecycleCallbacks: { }
在查詢資料表的時候我發現只能得到其中一個關係的資訊:
$query = $em ->createQuery( 'SELECT ga FROM AppBundle:GoodsAndAttribute ga WHERE ga.id = 1');
在orm中如何關聯多個表,實現相應資訊的查詢?例如
$query = $em ->createQuery( 'SELECT ga, g, a FROM ApplicationSonataMallBundle:GoodsAndAttribute ga JOIN ga.goods g JOIN ga.attribute a WHERE ga.id = 1');