2013-02-13 61 views
0

背景實現與CakePHP的

相同遞歸的效果我到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表看上去像一個小觀點:

Extract of Excel File

問題

我的問題很簡單:如何實現使用CakePHP同樣的效果?由於這會生成一個Excel表格,我需要能夠:a)在視圖中執行此操作,或者b)將數據傳輸到視圖文件。

這可能嗎?

回答

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

它完美! :)