Motomichi Works Blog

その日学習したことについて書いている日記です。誰かの役に立ったらそれはそれで嬉しいです。

vagrantその19-36 cakephp入門をやってみる(マジック検索)

参考にさせて頂いたページ

クエリー、マジック検索、AND/OR検索(1/3):初心者のためのCakePHP2.0 プログラミング入門

ホストマシン環境

ゲストマシン環境

NumTenSamplesController.phpを作成

入門のNo10なので、NumTenSamplesController.phpを作成した。

複数形のファイル名で、NumTenSamplesControllerとしており、class名もNumTenSamplesControllerでファイル名と同じ。

<?php
App::uses('AppController', 'Controller');

class NumTenSamplesController extends AppController {
  public function find() {
    //$変数 = $this->Modelクラス->findBy項目名( 検索する値 );
    $sampleData        = $this->NumTenSample->findByName('dummy');
    $sampleDataAll     = $this->NumTenSample->findAllByName('dummy');
    $this->set('sampleData',$sampleData);
    $this->set('sampleDataAll',$sampleDataAll);
  }
}

Model/NumTenSample.phpを作成

Modelのファイル名はNumTenSample.phpのように単数。
中に記述するクラス名もファイル名と同じくNumTenSampleとしている。 このときデータを取得するテーブル名はnum_ten_samplesと複数形だった。

よくわからないのは、Model/MySampleData.phpのときはテーブル名がmy_sample_dataと単数形だったこと。 ファイル名とクラス名は単数形にするのが規約で、table名はとりあえずそれに適合する名前にするか。

<?php
App::uses('AppModel', 'Model');

class NumTenSample extends AppModel {

}

View/NumTenSamples/find.ctpを作成

ディレクトリ名が、NumTenSamplesと複数形であり、Controllerのファイル名と同じ。

テーブルから取得した配列の構造はそれぞれ以下のようになっている。

$sampleData['NumTenSample']['id']

$sampleDataAll[0]['NumTenSample']['id']

find.ctpの内容は以下の通り。

    <h1>Add Page</h1>



    <h2>$sampleDataの内容</h2>
    <table>
      <tr>
        <th>id</th>
        <th>name</th>
        <th>mail</th>
        <th>tel</th>
      </tr>
<?php foreach ($sampleData as $value){ ?>
      <tr>
        <td><?php echo($value['id']); ?></td>
        <td><?php echo($value['name']); ?></td>
        <td><?php echo($value['mail']); ?></td>
        <td><?php echo($value['tel']); ?></td>
      </tr>
<?php } ?>
    </table>
    <br><br><br>



    <h2>$sampleDataAllの内容</h2>
    <table>
      <tr>
        <th>id</th>
        <th>name</th>
        <th>mail</th>
        <th>tel</th>
      </tr>
<?php foreach ($sampleDataAll as $value){ ?>
      <tr>
        <td><?php echo($value['NumTenSample']['id']); ?></td>
        <td><?php echo($value['NumTenSample']['name']); ?></td>
        <td><?php echo($value['NumTenSample']['mail']); ?></td>
        <td><?php echo($value['NumTenSample']['tel']); ?></td>
      </tr>
<?php } ?>
    </table>
    <br><br><br>

今回はここまで。