为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Yii2中获得同一查询中不同列的总和

如何在Yii2中获得同一查询中不同列的总和

PHP
呼如林 2021-06-27 13:39:04
我已经实现了 mysql 查询并且工作正常,但是在 Yii2 中转换/实现它时,我在使用 active record 时遇到了一些困难。SELECT COUNT(price) AS total,SUM(IF(is_veg = 'Y', 1, 0)) AS veg_count,SUM(IF(is_not_veg = 'Y', 1, 0)) AS non_veg_countFROM order_table我试过做以下orderTable::find()  ->select('count(price) as total')  ->sum(new Expression("IF(is_veg = 'Y', 1, 0)") => 'veg_count')  ->sum(new Expression("IF(is_not_veg = 'Y', 1, 0)") => 'non_veg_count');我收到以下错误:语法错误,意外的 '=>' (T_DOUBLE_ARROW),期待 ',' 或 ')'
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

您可以尝试使用数组中的列使用简单的选择

(并注意正确的引号序列)


orderTable::find()

  ->select(['count(price) as total', 

    "SUM(IF(is_veg = 'Y', 1, 0)) AS veg_count",

     "SUM(IF(is_not_veg = 'Y', 1, 0)) AS non_veg_count"])

但请确保您拥有列别名的相应公共变量,否则您的结果模型不包含结果


在您的 OrderTable 模型中,您需要


class OrderTable extends \yii\db\ActiveRecord

{


  public $veg_count;  

  public $non_veg_count;       

  ...


查看完整回答
反对 回复 2021-07-02
  • 1 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信