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実行結果

ブラウザから、上記で作成したCakePHPプログラムを「http://localhost/cake/dbacces/db_acces」によりアクセスすると、次のように表示されます。aq_myasicsテーブルに設定されているデータが、アクセスされて表示されていることが確認できます。

CakePHPの命名規則変換サイトによるデータベーステーブル名の確認

CakePHP名称規約表示サイト

CakePHPの規約にあった名称を表示してくれるサイトにより、各名称を確認します。Controllerのクラス名「DbAcces」を確認したときのサイトの表示を次に示します。