使用 doctrine orm 如何在程序逻辑上实现在一张表完成两个外键的设置(或则说一个实体完成两个多对一的关系)?
这是之前开的一个问题的后续,参考链接
我使用的是 symfony2
、donctrine
,里面关于数据库的操作,全部用的实体,官方推荐建立表与表之间的关系,我做了一些更改后,发现一个实体无法设置两个多对一的关系,下面是问题的描述与再现:
鉴于上一问题大家不推荐使用物理外健,我做了一些程序方面的处理:
删除数据表物理外健;
在程序中设置相应的实体关系;
简单的ER图更新:
商品属性关联表goods_and_attribute
相对于商品表goods
以及attributes
是多对一的关系啊,所以我在实体文件中添加以下程序:
<code>#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: { } </code>
在查询数据表的时候我发现只能得到其中一个关系的信息:
<code> $query = $em ->createQuery( 'SELECT ga FROM AppBundle:GoodsAndAttribute ga WHERE ga.id = 1'); </code>
在orm
中如何关联多个表,实现相应信息的查询?例如
<code>$query = $em ->createQuery( 'SELECT ga, g, a FROM ApplicationSonataMallBundle:GoodsAndAttribute ga JOIN ga.goods g JOIN ga.attribute a WHERE ga.id = 1'); </code>
回复内容:
这是之前开的一个问题的后续,参考链接
我使用的是 symfony2
、donctrine
,里面关于数据库的操作,全部用的实体,官方推荐建立表与表之间的关系,我做了一些更改后,发现一个实体无法设置两个多对一的关系,下面是问题的描述与再现:
鉴于上一问题大家不推荐使用物理外健,我做了一些程序方面的处理:
删除数据表物理外健;
在程序中设置相应的实体关系;
简单的ER图更新:
商品属性关联表goods_and_attribute
相对于商品表goods
以及attributes
是多对一的关系啊,所以我在实体文件中添加以下程序:
<code>#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: { } </code>
在查询数据表的时候我发现只能得到其中一个关系的信息:
<code> $query = $em ->createQuery( 'SELECT ga FROM AppBundle:GoodsAndAttribute ga WHERE ga.id = 1'); </code>
在orm
中如何关联多个表,实现相应信息的查询?例如
<code>$query = $em ->createQuery( 'SELECT ga, g, a FROM ApplicationSonataMallBundle:GoodsAndAttribute ga JOIN ga.goods g JOIN ga.attribute a WHERE ga.id = 1'); </code>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MySQL和phpMyAdmin是强大的数据库管理工具。1)MySQL用于创建数据库和表、执行DML和SQL查询。2)phpMyAdmin提供直观界面进行数据库管理、表结构管理、数据操作和用户权限管理。

IIS和PHP可以兼容,通过FastCGI实现。1.IIS通过配置文件将.php文件请求转发给FastCGI模块。2.FastCGI模块启动PHP进程处理请求,提高性能和稳定性。3.实际应用中需注意配置细节、错误调试和性能优化。

在MySQL中,外键的作用是建立表与表之间的关系,确保数据的一致性和完整性。外键通过引用完整性检查和级联操作维护数据的有效性,使用时需注意性能优化和避免常见错误。

MySQL和MariaDB的主要区别在于性能、功能和许可证:1.MySQL由Oracle开发,MariaDB是其分支。2.MariaDB在高负载环境中性能可能更好。3.MariaDB提供了更多的存储引擎和功能。4.MySQL采用双重许可证,MariaDB完全开源。选择时应考虑现有基础设施、性能需求、功能需求和许可证成本。

SQL是一种用于管理关系数据库的标准语言,而MySQL是一个使用SQL的数据库管理系统。SQL定义了与数据库交互的方式,包括CRUD操作,而MySQL实现了SQL标准并提供了额外的功能,如存储过程和触发器。

多次调用session_start()会导致警告信息和可能的数据覆盖。1)PHP会发出警告,提示session已启动。2)可能导致session数据意外覆盖。3)使用session_status()检查session状态,避免重复调用。

MySQL适合快速开发和中小型应用,Oracle适合大型企业和高可用性需求。1)MySQL开源、易用,适用于Web应用和中小型企业。2)Oracle功能强大,适合大型企业和政府机构。3)MySQL支持多种存储引擎,Oracle提供丰富的企业级功能。

AI可以帮助优化Composer的使用,具体方法包括:1.依赖管理优化:AI分析依赖关系,建议最佳版本组合,减少冲突。2.自动化代码生成:AI生成符合最佳实践的composer.json文件。3.代码质量提升:AI检测潜在问题,提供优化建议,提高代码质量。这些方法通过机器学习和自然语言处理技术实现,帮助开发者提高效率和代码质量。
