使用 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>

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











MySQL and phpMyAdmin are powerful database management tools. 1) MySQL is used to create databases and tables, and to execute DML and SQL queries. 2) phpMyAdmin provides an intuitive interface for database management, table structure management, data operations and user permission management.

IIS and PHP are compatible and are implemented through FastCGI. 1.IIS forwards the .php file request to the FastCGI module through the configuration file. 2. The FastCGI module starts the PHP process to process requests to improve performance and stability. 3. In actual applications, you need to pay attention to configuration details, error debugging and performance optimization.

In MySQL, the function of foreign keys is to establish the relationship between tables and ensure the consistency and integrity of the data. Foreign keys maintain the effectiveness of data through reference integrity checks and cascading operations. Pay attention to performance optimization and avoid common errors when using them.

The main difference between MySQL and MariaDB is performance, functionality and license: 1. MySQL is developed by Oracle, and MariaDB is its fork. 2. MariaDB may perform better in high load environments. 3.MariaDB provides more storage engines and functions. 4.MySQL adopts a dual license, and MariaDB is completely open source. The existing infrastructure, performance requirements, functional requirements and license costs should be taken into account when choosing.

SQL is a standard language for managing relational databases, while MySQL is a database management system that uses SQL. SQL defines ways to interact with a database, including CRUD operations, while MySQL implements the SQL standard and provides additional features such as stored procedures and triggers.

MySQL is suitable for rapid development and small and medium-sized applications, while Oracle is suitable for large enterprises and high availability needs. 1) MySQL is open source and easy to use, suitable for web applications and small and medium-sized enterprises. 2) Oracle is powerful and suitable for large enterprises and government agencies. 3) MySQL supports a variety of storage engines, and Oracle provides rich enterprise-level functions.

Multiple calls to session_start() will result in warning messages and possible data overwrites. 1) PHP will issue a warning, prompting that the session has been started. 2) It may cause unexpected overwriting of session data. 3) Use session_status() to check the session status to avoid repeated calls.

MySQL and phpMyAdmin can be effectively managed through the following steps: 1. Create and delete database: Just click in phpMyAdmin to complete. 2. Manage tables: You can create tables, modify structures, and add indexes. 3. Data operation: Supports inserting, updating, deleting data and executing SQL queries. 4. Import and export data: Supports SQL, CSV, XML and other formats. 5. Optimization and monitoring: Use the OPTIMIZETABLE command to optimize tables and use query analyzers and monitoring tools to solve performance problems.
