Activerecord Yii PHP-JSON编码活动记录将int和boolean转换为字符串

Activerecord Yii PHP-JSON编码活动记录将int和boolean转换为字符串,activerecord,yii,Activerecord,Yii,在我的数据库中,我有一个具有以下结构的friends表: id(int) 用户_a(int) 用户_b(int) 已接受(tinyint) 我有一个活动记录查询,如下所示: $friends = Friend::model()->findAll('user_a=:userId AND accepted IS true', array(':userId' => $this->user->id)); $this->sendResponse(200, CJSON::e

在我的数据库中,我有一个具有以下结构的friends表:

  • id(int)
  • 用户_a(int)
  • 用户_b(int)
  • 已接受(tinyint)
我有一个活动记录查询,如下所示:

$friends = Friend::model()->findAll('user_a=:userId AND accepted IS true', array(':userId' => $this->user->id));
$this->sendResponse(200, CJSON::encode($friends), 'application/json');
我得到了以下API响应:

[{“id”:“2”,“用户a”:“14”,“用户b”:“3”,“接受”:“1”}]

CJSON::encode似乎将所有内容都转换为字符串,这是为什么?有没有一种方法可以将整数作为数字返回,将tinyint作为布尔值返回

谢谢

Eric

CJSON::encode()不会将变量转换为字符串,但findAll()会。如果您转储$friends模型属性,您将看到它。您可以这样做来处理它:

protected function afterFind()
{
    $this->id = (int) $this->id;
    $this->user_a = (int) $this->user_a;
    // etc
    parent::afterFind();
}