Yii2 \yii\db\Query()中的数学
我想做一些数学运算(除法、减法、加法…),两个或更多字段的值使用一个Yii数据库查询,如下所示。我可以这样做吗Yii2 \yii\db\Query()中的数学,yii2,yii2-basic-app,Yii2,Yii2 Basic App,我想做一些数学运算(除法、减法、加法…),两个或更多字段的值使用一个Yii数据库查询,如下所示。我可以这样做吗 $data = (new \yii\db\Query()) ->select([ 'date', 'SUM( IF(status = "Passed", 1, 0) ) AS passed', 'SUM( IF(status = "Failed", 1, 0) ) AS failed', 'SUM( IF(status = "On Hold", 1, 0) )
$data = (new \yii\db\Query())
->select([
'date',
'SUM( IF(status = "Passed", 1, 0) ) AS passed',
'SUM( IF(status = "Failed", 1, 0) ) AS failed',
'SUM( IF(status = "On Hold", 1, 0) ) AS onhold',
'passed/onhold as selfsubmit',
'COUNT(*) AS total'
])
->from('qa3d')
->groupBy('date')
->all();
首先,不能在MySQL的同一查询中使用别名进行算术(math)。那也是 但是您可以使用
yii\db\Expression
类进行计算,因为这样,框架就不会试图将表达式转义为MySQL列
因此,基本上您必须选择不带别名的表达式和expression
类
例如:
$data=(新建\yii\db\Query())
->挑选([
“日期”,
'已通过的总和(如果(status=“Passed”,1,0)',
“总和(如果(status=“Failed”,1,0))为失败”,
'如果(status=“On Hold”,1,0))为On Hold'的总和,
新的\yii\db\Expression('SUM(IF(status=“Passed”,1,0))/SUM(IF(status=“On Hold”,1,0))作为selfsubmit'),
'将(*)计为总计'
])
->from('qa3d')
->分组人(“日期”)
->全部();