gpt4 book ai didi

php - 如何在 Yii $criteria 中使用 DATE_ADD?

转载 作者:可可西里 更新时间:2023-10-31 23:07:18 25 4
gpt4 key购买 nike

模型.php

// Declare $datetime_limit
public datetime_limit;

Controller .php

// datetime_limit should be the actual datetime + 5 days
$criteria->select="DATE_ADD(NOW(), INTERVAL 5 DAY) AS datetime_limit";

错误信息:

Active record "Users" is trying to select an invalid column "DATE_ADD(NOW()". Note, the column must exist in the table or be an expression with alias.

编辑 1:

我想使用关系表(多对多)过滤带条件的查找。因此 datetime_limit 不能包含在关系型 events.datetime 中。我该怎么做?

$criteria->select=array("DATE_ADD(NOW(), INTERVAL 5 DAY) AS datetime_limit");
$criteria->with=array('events');
$criteria->having='datetime_limit!=`events`.`datetime`';
$models=Users::model()->findAll($criteria);

最佳答案

此异常在CActiveFinder::getColumnSelect 中抛出.

CDbCriteria::$select 是一个字符串时,它被视为一个简单的逗号分隔列列表。您的表达式被解释为两个不同的列。您可以通过自己将 select 设置为一个数组来解决此问题 - 在这种情况下,逗号拆分不会完成1:

$criteria = new CDbCriteria();
$criteria->select = array("DATE_ADD(NOW(), INTERVAL 5 DAY) AS datetime_limit");
$models = Users::model()->findAll($criteria);

请注意,如果您编写的别名不对应于公共(public)模型属性或数据库字段,它将被检索但被默默地忽略 - 出于某种原因 Yii 不会为此抛出异常。


1 但是,此函数仍会尝试在表达式中查找 . 并将其后的部分解释为列标识符 - 不要使用 . 在你的表达中,你应该没问题。

关于php - 如何在 Yii $criteria 中使用 DATE_ADD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14059514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com