我如何在cakephp中划定自定义阵列



我想查看自定义数组。我的控制器和视图代码在下面给出。

控制器代码:

public function admin_detail(){
        $totalByDate = $this->Pbscodemetric->find('all',array('fields'=>array('created')));
        $createdDate = Set::extract('/Pbscodemetric/created', $totalByDate);
        $uniqueCreatedDate = array_unique($createdDate);
        $finalArray = array();
        foreach($uniqueCreatedDate as $created){
            $downloadsArr = $this->Pbscodemetric->find('all',array('fields'=>array('downloads_iphone','downloads_ipad','downloads_android'),'conditions'=>array('created'=>$created)));
            $download_iphone = array_sum(Set::extract('/Pbscodemetric/downloads_iphone',$downloadsArr));
            $download_ipad = array_sum(Set::extract('/Pbscodemetric/downloads_ipad',$downloadsArr));
            $downloads_android = array_sum(Set::extract('/Pbscodemetric/downloads_android',$downloadsArr));
            $finalArray[$created] = array(
                'downloads_iphone' => $download_iphone,
                'downloads_ipad' => $download_ipad,
                'downloads_android' => $downloads_android
            );
        }
        $this->set('finalArray',$finalArray);
    }

查看代码:

<div class="pbscodemetrics index">
    <h2><?php echo __('Pbscodemetrics List Detail'); ?></h2>
    <table cellpadding="0" cellspacing="0">
        <tr>
            <th>Date</th>
            <th>iPhone</th>
            <th>iPad</th>
            <th>Android</th>    
        </tr>
        <?php 
        foreach($finalArray as $key => $final){?>
            <tr> 
                <td><?php echo $key;?></td>
                <td><?php echo $final['downloads_iphone'];?></td>
                <td><?php echo $final['downloads_ipad'];?></td>
                <td><?php echo $final['downloads_android'];?></td>
            </tr>
            <?php }?>
    </table>
</div>
<div class="actions">
    <?php echo $this->element('nav');?>
</div>

现在我想设置分页。我知道在CakePHP中默认分页需要模型名称。但是,我该如何处理上述代码?

任何人都可以帮我..

您可以实现自定义分页,请参阅食谱中的自定义查询分页。但是,看来您正在使用分组和SQL SUM函数可以完成的工作,这样您就可以简单地使用内置的分页。示例:

$alias = $this->Pbscodemetric->alias;
$this->Pbscodemetric->virtualFields = array
(
    'downloads_iphone_sum' => sprintf('SUM(`%s.downloads_iphone`)', $alias),
    'downloads_ipad_sum' => sprintf('SUM(`%s.downloads_ipad`)', $alias),
    'downloads_android_sum' => sprintf('SUM(`%s.downloads_android`)', $alias)
);
$this->paginate = array
(
    'fields' => array
    (
        'downloads_iphone_sum',
        'downloads_ipad_sum',
        'downloads_android_sum',
        'created'
    ),
    'group' => 'created',
    'order' => array
    (
        'created' => 'desc'
    ),
    'limit' => 10
);
$data = $this->paginate($alias);

这将为您提供由created列分组的downloads_iphonedownloads_ipaddownloads_android列的汇总的Paginator Helper兼容结果。它使用虚拟字段来重新录制默认的蛋糕样式,即它们将像这样访问:

    <?php foreach($results as $result): ?>
        <tr> 
            <td><?php echo $result['Pbscodemetric']['created'];?></td>
            <td><?php echo $result['Pbscodemetric']['downloads_iphone_sum'];?></td>
            <td><?php echo $result['Pbscodemetric']['downloads_ipad_sum'];?></td>
            <td><?php echo $result['Pbscodemetric']['downloads_android_sum'];?></td>
        </tr>
    <?php endforeach; ?>

相关内容

  • 没有找到相关文章

最新更新