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

 

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

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

表达式对象主要用于将原始 SQL 表达式传递给yii\db\Query, yii\db\ActiveQuery 和相关类的方法。yii

 

问题:

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

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

Database Exception – yii\db\Exception
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'
)scala

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

 

这时,须要使用 Expression:对象

User::find()->select(['id', new Expression('0 as is_constant')])->asArray()->all()
相关文章
相关标签/搜索