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 に答える