我正在使用Yii CDBCriteria查找记录。
我必须在"SELECT"中放入一个字符串值作为自定义列,如下所示:
$criteria = new CDbCriteria;
$criteria->select = array('*, DATE_ADD(createdon, INTERVAL :timezonediff SECOND) as createdon' );
$criteria->condition = "some_amount > 1000";
$criteria->params = array(':timezonediff' => "10800");
$transModel = new TransactionModel;
我遇到了一个问题,无法在SELECT中提供":timezondepff"令牌的值。
$criteria->params
仅适用于条件中的令牌,而不适用于SELECT。
我甚至试图在$criteria->select
中给出一个数组,但没有成功。
有人知道我是不是做错了什么吗?
您可以尝试通过CDbExpression
:绕过此问题
$criteria->select=array(
'*',
new CDbExpression('DATE_ADD(`createdon`, INTERVAL :timezonediff SECOND) as createdon',array(
':timezonediff'=>10800,
)),
);
感谢大家的贡献。我已经解决了这个问题。我犯了一个导致错误的错误。我将这个标准提供给另一个没有的对象:timezondepff令牌。
即使在"选择"中,令牌的参数也可以平滑地绑定到$criteria->params中,并且不会产生错误。所以从技术上讲,我发布的代码不会有任何错误。
尝试:
$criteria->condition = $main_condition;
$criteria->params = array(':timezonediff'=>$main_condition);