Yii2:如何在简单的 find() 响应中进行数学加法?

Yii2: How to do a math addition in a simple find() response?

我有一个用 Yii2 find() 函数创建的数组(称为 products),它有两个字段(称为 name and price) 我需要做一个简单的算术加法:price + 5。但我不知道该怎么做。

使用SQL很简单,但是用Yii2我不知道怎么解决。

$products = Products::find()
    ->select([
        'name',
        'price',
        'price' + 5
    ])
    ->asArray()
    ->all();

Select 您的列作为额外字段:https://www.yiiframework.com/doc/guide/2.0/en/db-active-record#selecting-extra-fields

你可以试试这个

->select("name,price, price + 5")

原因是因为您需要不引用表达式,只需在您的select()语句中使用\yii\db\Expression(),如下所示

$products = Products::find()
    ->select(['name','price',new \yii\db\Expression('price+5')])
    ->asArray()
    ->all();

如果 pricediscount 是 table 字段,您甚至可以用它来排除价格折扣,见下文。

$products = Products::find()
    ->select(['name', 'price', new \yii\db\Expression('price - discount')])
    ->asArray()
    ->all();

除了上面使用的语法之外,您还可以将整个 selet 语句包装在 Expression 中,例如

->select([new \yii\db\Expression('name, price, price + 5')])