控制器中的方法
public function getLike() {
$this->Feed->UserLikeFeed->recursive = 1;
$this->Paginator->settings = array(
'contain' => array('UserLikeFeed','UserCommentFeed','UserShareFeed')
);
$like_comment_shares = $this->Paginator->paginate();
$this->set(array(
'like_comment_shares' => $like_comment_shares,
'_serialize' => array('like_comment_shares')
));
}
型号
public $hasMany = array(
'Image' => array(
'className' => 'Image',
'foreignKey' => 'feed_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
),
'UserCommentFeed' => array(
'className' => 'UserCommentFeed',
'foreignKey' => 'feed_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
),
'UserLikeFeed' => array(
'className' => 'UserLikeFeed',
'foreignKey' => 'feed_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
),
'UserShareFeed' => array(
'className' => 'UserShareFeed',
'foreignKey' => 'feed_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
),
);
当我访问控制器中的方法时,它会返回如下所示的值。我想得到一些数据。例如:UserLikeFeed,它返回两个值。我想要2。我现在该怎么办?谢谢你的帮助。
结果
{
"like_comment_shares": [
{
"Feed": {
"id": "72",
"admin_id": "2",
"title": "New term",
"description": "This is a new term"
},
"UserCommentFeed": [
{
"user_id": "1",
"feed_id": "72",
"created": null,
"description": "Going home"
},
{
"user_id": "1",
"feed_id": "72",
"created": null,
"description": "Going School"
}
],
"UserLikeFeed": [
{
"user_id": "1",
"feed_id": "72"
},
{
"user_id": "2",
"feed_id": "72"
}
],
"UserShareFeed": [
]
},
因为您正在对数据进行分页,所以您只会根据分页限制获得特定页面的值,而不是考虑计算json结果,只需在将其序列化为json之前计算数组中的结果,基本上您可以执行以下操作:
$userlikefeed_count = count($like_comment_shares['UserLikeFeed']);
它将返回该数组中的项目数,然后您也可以将此数据发送到控制器:
$this->set(array(
'like_comment_shares' => $like_comment_shares,
'userlikefeed_count' => $userlikefeed_count
'_serialize' => array('like_comment_shares', 'userlikefeed_count')
));