首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么此查询表达式中表别名转换为小写

为什么此查询表达式中表别名转换为小写
EN

Stack Overflow用户
提问于 2020-06-24 17:43:08
回答 1查看 39关注 0票数 0

该查询取所有降价幅度超过30%的产品:

代码语言:javascript
复制
return $query->where([
    'Products.reduced_price / Products.price <' => 0.7,
]);

此查询将导致以下错误:

代码语言:javascript
复制
Column not found: 1054 Unknown column 'products.price' in 'where clause'

为什么表别名被转换为小写?这个错误似乎取决于你的mysql设置。一些设置似乎不区分大小写(例如,我的dev-machine),其他设置,比如我的生产服务器,是区分大小写的;)

遗憾的是,在这种情况下不能省略表别名"Products“,因为有一个连接表也有一个名为"price”的列。省略别名将导致此错误:Column 'price' in where clause is ambiguous

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-24 17:43:08

原因是QueryExpression类的_parseCondition方法。它将假定第一个空格之后的所有内容都是运算符,并对其使用strtolower,从而使别名变得小写。

这可以通过删除表达式中的所有空格来轻松缓解,如下所示:

代码语言:javascript
复制
return $query->where([
    'Products.reduced_price/Products.price <' => 0.7,
]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62552112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档