我可以在cakepp中计算返回值格式json的数量吗



控制器中的方法

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')
));

最新更新