使用doctrineorm如何在程序逻辑上实现在一张表完成两个外键的设置(或则说一个实体完成两个多对一的关系)?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用doctrineorm如何在程序逻辑上实现在一张表完成两个外键的设置(或则说一个实体完成两个多对一的关系)?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2450字,纯文字阅读大概需要4分钟。
内容图文
![使用doctrineorm如何在程序逻辑上实现在一张表完成两个外键的设置(或则说一个实体完成两个多对一的关系)?](/upload/InfoBanner/zyjiaocheng/244/43180b48e60d400f8ba94a2c07d55c39.jpg)
这是之前开的一个问题的后续,参考链接
我使用的是 symfony2
、donctrine
,里面关于数据库的操作,全部用的实体,官方推荐建立表与表之间的关系,我做了一些更改后,发现一个实体无法设置两个多对一的关系,下面是问题的描述与再现:
鉴于上一问题大家不推荐使用物理外健,我做了一些程序方面的处理:
删除数据表物理外健;
在程序中设置相应的实体关系;
简单的ER图更新:
商品属性关联表goods_and_attribute
相对于商品表goods
以及attributes
是多对一的关系啊,所以我在实体文件中添加以下程序:
#src/AppBundle/Resources/config/doctrine/GoodsAndAttribute.orm.yml
AppBundle\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.yml
AppBundle\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');
内容总结
以上是互联网集市为您收集整理的使用doctrineorm如何在程序逻辑上实现在一张表完成两个外键的设置(或则说一个实体完成两个多对一的关系)?全部内容,希望文章能够帮你解决使用doctrineorm如何在程序逻辑上实现在一张表完成两个外键的设置(或则说一个实体完成两个多对一的关系)?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。