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

我已经实现了 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_count

FROM 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),期待 ',' 或 ')'


呼如林
浏览 168回答 1
1回答

守候你守候我

您可以尝试使用数组中的列使用简单的选择(并注意正确的引号序列)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;         ...
打开App,查看更多内容
随时随地看视频慕课网APP