php – Yii CDbCriteria和Model-> findAll,如何添加自定义列
发布时间:2020-12-13 13:22:19 所属栏目:PHP教程 来源:网络整理
导读:我在Yii有一个日历应用程序,我按用户存储事件.我想动态地为每个事件建立一个标题. 这段代码在我的控制器中: $criteria = new CDbCriteria;$criteria-select = array('all_day','end','id','start');$criteria-condition = 'user_id ='.$user-id;$events = C
我在Yii有一个日历应用程序,我按用户存储事件.我想动态地为每个事件建立一个标题.
这段代码在我的控制器中: $criteria = new CDbCriteria; $criteria->select = array('all_day','end','id','start'); $criteria->condition = 'user_id ='.$user->id; $events = Calendar::model()->findAll($criteria); foreach($events as $event) { $event->title = 'test title'; } echo CJSON::encode($events); 在我的日历模型中,我添加了一个名为$title的新属性: public $title; 但是当我去回应JSON时,标题没有出现…… [{"all_day":false,"end":"-948712553","id":"2","start":"-146154706"}] 要将标题添加到JSON结果集,我需要做什么?
发生这种情况是因为CJSON :: encode对每个模型的属性进行编码,并且自定义属性不会添加到模型的属性中.自定义属性添加到模型的方式,这不能以直接的方式完成.
虽然从this answer开始提示,我确实提出了一个解决方法: $events = Calendar::model()->findAll($criteria); $rows=array();// we need this array foreach($events as $i=>$event) { $event->title = 'test title'; $rows[$i]=$event->attributes; $rows[$i]['title']=$event->title; } echo CJSON::encode($rows); // echo $rows instead of $events 上面的代码应该有效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |