php - 使用错误的表别名生成查询的原则

标签 php mysql symfony doctrine-orm

我正在尝试使用 doctrine/orm 2.5.1 做一个简单的 ->find()

查询非常简单:

$this->get('order_repository')->find(10);

但这会生成一个复杂的查询:

SELECT s0_.number AS number_0, s0_.state AS state_1, s0_.completed_at AS completed_at_2, s0_.items_total AS items_total_3, s0_.adjustments_total AS adjustments_total_4, s0_.total AS total_5, s0_.created_at AS created_at_6, s0_.updated_at AS updated_at_7, s0_.deleted_at AS deleted_at_8, s0_.id AS id_9, s0_.expires_at AS expires_at_10, s1_.currency AS currency_11, s1_.checkout_state AS checkout_state_12, s1_.payment_state AS payment_state_13, s1_.shipping_state AS shipping_state_14, s2_.quantity AS quantity_15, s2_.unit_price AS unit_price_16, s2_.adjustments_total AS adjustments_total_17, s2_.total AS total_18, s2_.is_immutable AS is_immutable_19, s2_.id AS id_20, s1_.channel_id AS channel_id_21, s1_.shipping_address_id AS shipping_address_id_22, s1_.billing_address_id AS billing_address_id_23, s1_.customer_id AS customer_id_24, s1_.offer_id AS offer_id_25, s2_.order_id AS order_id_26, s2_.variant_id AS variant_id_27 FROM sylius_order s1_ LEFT JOIN sylius_order_item s2_ ON s1_.id = s2_.order_id WHERE (s1_.id = 10) AND (s1_.deleted_at IS NULL)'

出现以下错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 's0_.number' in 'field list'

我可以看到 s0_ 没有在查询的任何地方定义。这些别名是根据原则自动生成的,我只是不明白为什么它使用 s0_ 然后将其跳到 FROM 上的 s1_,其中包含 s0_.*

中提到的列

最佳答案

我刚刚在同一个问题上花了一个小时;你可能犯了和我一样的错别字。

我的问题出在 .yml 模式定义中。在我定义表之间关系的部分中,我有这个目标实体:

目标实体:mlEmailNotif

代替

目标实体:MlEmailNotif

因此小写的“m”使 doctrine 为新表创建一个新别名(php 比较区分大小写)。

关于php - 使用错误的表别名生成查询的原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32889754/

相关文章:

php - 多维 PHP 数组或对 mysql 数据库的多个查询

php - 我怎样才能在关键字后切断文本?

php - 如何动态填充 Google 图表 API

Php、MySql 连接表,限制每个类别的记录

java - JPQL 不工作,但 SQL 是

php - Symfony3,Doctrine\ORM\EntityRepository::__construct() 缺少参数 1,如何以及为什么

mysql - Doctrine - SQL 查询生成器 - 更新和连接?

php - 为什么 mysql 数据库中的图像显示为损坏?

symfony - Symfony Ajax Response显示缓存头

带有 MySQL 集群的 PHP/PDO