加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

YII 中使用 Expression解决查询中带有常量报错的问题

发布时间:2020-12-13 21:24:31 所属栏目:PHP教程 来源:网络整理
导读:? Yii 官方手册关于 Expression 的解释:https://www.yiichina.com/doc/api/2.0/yii-db-expression Expression 表示不需要转义或引用的 DB 表达式。 当表达式对象嵌入到 SQL 语句或片段时, 它将替换为 $expression 属性值,而不进行任何的 DB 转义或引用。

?

Yii 官方手册关于 Expression 的解释:https://www.yiichina.com/doc/api/2.0/yii-db-expression

Expression 表示不需要转义或引用的 DB 表达式。
当表达式对象嵌入到 SQL 语句或片段时, 它将替换为 $expression 属性值,而不进行任何的 DB 转义或引用。 例如,
$expression = new Expression('NOW()');
$now = (new yiidbQuery)->select($expression)->scalar(); // SELECT NOW();
echo $now; // prints the current date

表达式对象主要用于将原始 SQL 表达式传递给yiidbQuery, yiidbActiveQuery 和相关类的方法。

?

问题:

当我们需要使用一个常量作为查询字段的时候,使用下面的写法,运行会报错:

User::find()->select(['id','0 as is_constant'])->asArray()->all()

Database Exception – yiidbException
SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list'
The SQL being executed was: SELECT `id`,`0` AS `is_constant` FROM `user`
Error Info: Array
(
[0] => 42S22
[1] => 1054
[2] => Unknown column '0' in 'field list'
)

Caused by: PDOException
SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list'

?

这时,需要使用 Expression:

User::find()->select(['id',new Expression('0 as is_constant')])->asArray()->all()

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读