CakePHPであらかじめ決められているデータベースのテーブル名は、通常modelで指定した単語の複数形のものが自動的に認識されます。しかし、すでに作成されたテーブルをCakePHPで使用したいときには、改めに使用するデータベースのテーブル名を指定する必要があります。
次のように各Controller、Model、Viewを設定します。ここでは、Modelで、$useTableにテーブルaq_myasicsが設定されており、この設定により、データベースのテーブルaq_myasicsにアクセスします。もし、「/ app / Model」に「DbAcce.php」が存在しない場合、ディフォルトのテーブル「db_acces」を探すために、データベースにアクセスされます。また、各ファイル名もクラス名に基づき決定されます。ファイル名が規約通りでないと、CakePHPがファイルが存在しないとして、エラーメッセージが表示されます。
Controller – DbAccesController.php :/ app /Controller
<?php class DbAccesController extends AppController { function index() { $this->set("results", $this->DbAcce->find('all')); } }
Model – DbAcce.php :/ app / Model
<?php class DbAcce extends AppModel { public $useTable = 'aq_myasics'; } ?>
View – index.ctp :/ app / View
<table> <tr><td>No</td></tr> <?php foreach ($results as $result): ?> <tr> <td><?php echo $result["DbAcce"]["id_no"] ?></td> </tr> <?php endforeach ?> </table>
各クラス間の関係
データベースのテーブルaq_myasicsにアクセスして表示するために、各クラス間で次のようにデータを受け渡します。
- Controller で記述されている「$this->set(“results”, $this->DbAcce->find(‘all’));」の「results」は、View に渡すデータを示します。今回は、View のforeach文「<?php foreach ($results as $result): ?>」で使用しています。「$this->DbAcce->find(‘all’)」は、SQL文と同等の機能を持ち、この「DbAcce」はModelのクラス名を示します。
- Viewの「<td><?php echo $result[“DbAcce”][“id_no”] ?></td>」の配列の引数「DbAcce」は、Modelのクラス名を設定します。
ブラウザから、上記で作成したCakePHPプログラムを「http://localhost/cake/dbacces/db_acces」によりアクセスすると、次のように表示されます。aq_myasicsテーブルに設定されているデータが、アクセスされて表示されていることが確認できます。
CakePHPの命名規則変換サイトによるデータベーステーブル名の確認
CakePHPの規約にあった名称を表示してくれるサイトにより、各名称を確認します。Controllerのクラス名「DbAcces」を確認したときのサイトの表示を次に示します。