首页 > 解决方案 > Yii2:如何在简单的 find() 响应中进行数学加法?

问题描述

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

使用 SQL 很容易,但使用 Yii2 我不知道如何解决它。

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

标签: phpmathyii2arithmetic-expressions

解决方案


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

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

price如果和是表格字段,您甚至可以使用它来排除价格折扣discount,见下文。

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

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

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

推荐阅读