【问题标题】:How use DATE_ADD in Yii $criteria especially inside select?如何在 Yii $criteria 中使用 DATE_ADD,尤其是在 select 中?
【发布时间】:2014-04-08 07:08:12
【问题描述】:

我这个 sql 部分的代码是

$criteria = new CDbCriteria;
.......
$criteria->select = 'user.user_id as userId, user.name as userName, COUNT(*) AS totalCount,
                        SUM(CASE WHEN (t.create_datetime > (SELECT DATE_ADD(curdate(), INTERVAL(2-DAYOFWEEK(curdate())) DAY)) AND t.create_datetime < \'2013-06-08\') THEN 1 ELSE 0 END) AS weeklyCount,
                        SUM(CASE WHEN (MONTH(t.create_datetime) = 9 ) THEN 1 ELSE 0 END) AS monthlyCount';
.......
$criteria->group = 'user.user_id';
$criteria->with = array('user');
$criteria->addCondition('t.deleted=0', 'AND');
$criteria->addCondition('t.user_id = user.user_id', 'AND');

我得到的错误是:

Type: CDbException
Active record `Inspection` is trying to select an invalid column `SUM(CASE WHEN (t.create_datetime > (SELECT DATE_ADD(curdate()`. Note, the column must exist in the table or be an expression with alias.

我看过:How use DATE_ADD in Yii $criteria? 这是 Yii $criteriadate_add 的解决方案。但在我的情况下,日期添加不适用于选择,它是选择中的一个条件。

请帮助我。谢谢

【问题讨论】:

  • 尝试了davey解决方案后还有问题吗?
  • 我正在尝试。因为我正在处理另一个问题。但我认为他的解决方案是可以的。 :)

标签: php yii


【解决方案1】:

创建一个select语句的数组,这样Yii可以“识别”别名(如果$criteria-&gt;select是一个字符串,它不知道去哪里寻找别名):

$criteria->select = array(
   'user.user_id AS userId', 
   'user.name AS userName', 
   'COUNT(*) AS totalCount',
   'SUM(CASE WHEN (t.create_datetime > (SELECT DATE_ADD(curdate(), INTERVAL(2-DAYOFWEEK(curdate())) DAY)) AND t.create_datetime < \'2013-06-08\') THEN 1 ELSE 0 END) AS weeklyCount',
   'SUM(CASE WHEN (MONTH(t.create_datetime) = 9 ) THEN 1 ELSE 0 END) AS monthlyCount'
);

【讨论】:

  • 我不知道为什么将数组放入其中后,某些字段无法显示。
  • 用户名、月数、总数。但我认为这不是添加数组。 Bc 当我从 1 个选择分离到多个选择(例如 $criteria->select = 'user.user_id AS userId'; $criteria->select = 'user.name AS userName')时,它也无法显示某些字段。
  • 您是否在模型中添加了别名作为属性?
  • 我之前在模型中添加了所有别名,但不知道为什么没有显示。我已经用不同的方式解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
  • 2019-05-09
相关资源
最近更新 更多