0

背景

我正在将所有旧脚本移至 cakePHP 框架。这样做的原因是花费更少的时间来尝试查找和修复错误,并且必须更好的布局和结构。哦,还有速度。但随之而来的是巨大的学习曲线。这是我第一个使用 cakePHP 的应用程序,所以我对框架的功能和能力非常陌生(而且毫无头绪)。

我的问题

在一个较旧的脚本中,我递归地遍历字母表以从以该特定字母开头的数据库中检索名称。这些结果根据它们的起始字母进行分类。

为此,我的旧脚本如下所示:

$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
for($l = 0; $l < strlen($letters); $l++) {
    $names = mysql_query("SELECT name,ext,new FROM admin_extensions WHERE office = '" . $_GET['branch'] . "' AND name LIKE '" . $letters[$l] . "%' ORDER BY name ASC")or die(mysql_error());
    // Do something fancy...
}

我不知道如何将其翻译成 cakePHP。该脚本将内容输出到 Excel 工作表。这是 excel 工作表的小视图:

Excel文件的提取

问题

我的问题很简单:如何用 cakePHP 达到同样的效果?由于这会生成一个 Excel 工作表,因此我需要能够 a) 在视图中执行此操作,或者 b) 将数据传输到视图文件。

这可能吗?

4

1 回答 1

0

所以在更多的汗水之后,我解决了这个问题。

这就是我的做法。

在我的控制器中:

$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
for($l = 0; $l < strlen($letters); $l++) {
    $adminExtensions[$letters[$l]] = $this->AdminExtension->find('all',
        array(
            'conditions' => array(
                'AND' => array(
                    'AdminExtension.location_id'=>'3',
                    'HrEmployee.name LIKE '=>$letters[$l].'%'
                )
            )
        )
    );
}
$this->set(compact('adminExtensions'));

在我看来,我这样做了:

$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$k = 1;
for($l = 0; $l < strlen($letters); $l++) {
    $this->PhpExcel->write('B'.($l+$k+1),$letters[$l]);
    foreach ($adminExtensions[$letters[$l]] as $adminExtension) {
        $k++;
        $this->PhpExcel->write('A'.($l+$k+1),$adminExtension['HrEmployee']['name'] . ' ' . $adminExtension['HrEmployee']['surname']);
        $this->PhpExcel->write('B'.($l+$k+1),$adminExtension['AdminExtension']['ext']);
    }
}

它完美地工作!:)

于 2013-02-13T15:08:16.503 回答