php – Yii CDbCriteria和Model-> findAll,如何添加自定义列?

前端之家收集整理的这篇文章主要介绍了php – Yii CDbCriteria和Model-> findAll,如何添加自定义列?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在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

上面的代码应该有效.

原文链接:https://www.f2er.com/php/137130.html

猜你在找的PHP相关文章