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'
)scalaCaused 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()