跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

使用 doctrine orm 如何在程序逻辑上实现在一张表完成两个外键的设置(或则说一个实体完成两个多对一的关系)?

这是之前开的一个问题的后续,参考链接 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 我使用的是
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');

相关文章