我正在使用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中提供“:timezonediff”标记的值。
$criteria->params
仅适用于有效的令牌,但不适用于SELECT。
我甚至试图在$criteria->select
中给出一个数组,但它没有用。
有人知道我在这里做错了吗?
答案 0 :(得分:1)
您可以尝试通过CDbExpression
:
$criteria->select=array(
'*',
new CDbExpression('DATE_ADD(`createdon`, INTERVAL :timezonediff SECOND) as createdon',array(
':timezonediff'=>10800,
)),
);
答案 1 :(得分:0)
谢谢大家的贡献。我已经解决了这个问题。我犯了一个导致错误的错误。我将此标准提供给另一个没有的对象:timezonediff token。
即使在“select”中,令牌的参数也可以平滑地绑定在$ criteria-> params中,并且不会产生任何错误。所以从技术上讲,我发布的代码中没有错误。
答案 2 :(得分:-2)
尝试:
$criteria->condition = $main_condition;
$criteria->params = array(':timezonediff'=>$main_condition);