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

Rob*_*ini 0 php math arithmetic-expressions yii2

我有一个使用Yii2 find()函数创建的数组(称为产品),有两个字段(称为名称价格),我需要做一个简单的算术加法:price + 5.但我不知道该怎么做.

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

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

Muh*_*lam 5

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

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

你甚至可以用它来排除对价格的折扣,如果pricediscount是表中的字段,见下文.

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

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

->select([new \yii\db\Expression('name, price, price + 5')])
Run Code Online (Sandbox Code Playgroud)