Motomichi Works Blog

モトミチワークスブログです。その日学習したことについて書いている日記みたいなものです。

vagrantその19-27 cakephp入門をやってみる(データを検索するその3)「find」メソッドの第2パラメータ

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

データを検索する(4/4):初心者のためのCakePHP2.0 プログラミング入門

「find」メソッドの第2パラメータ

以下は引用。

‘conditions’――検索条件の設定をするものです。検索する項目名をキーにして、検索テキストを値に設定した連想配列を指定します。 ‘fields’――取得する項目の名前を配列で指定します。 ‘recursive’――再帰的に取得する深度の指定です。単純に1つのテーブルからデータを探すだけなら不要です。 ‘order’――並び順です。並び順をチェックする項目順に、項目名を配列でまとめます。 ‘limit’――取り出す最大項目数です。 ‘page’――ページ番号です。limitで指定した個数を1ページとして、何ページ目のデータを取り出すか指定します。 ‘offset’――データの取得を開始する番号(いくつ目から取り出すか)を指定します。

MySampleDatasController.phpの記述内容

参考ページにならって、findメソッドを追加したので、以下の通り。

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

class MySampleDatasController extends AppController {
  function index(){
    // レイアウト関係
    $this->layout = "Sample";
    $this->set("header_for_layout","Sample Application");
    $this->set("footer_for_layout","copyright by SYODA-Tuyano. 2011.");
    // 以下がデータベース関係
    $datas = $this->MySampleData->find('all');
    $this->set('datas',$datas);
  }
  function find(){
    $this->set("header_for_layout","Sample Application");
    $this->set("footer_for_layout","copyright by SYODA-Tuyano. 2011.");
    if (isset($this->data['id'])){
      //find.tplでsubmitした文字列を$idに格納
      $id = $this->data['id'];
      //MySampleDataモデルクラスのレコードのうち、idが$idと等しいレコードを$statusに格納
      $status = array(
        'conditions' => array(
          'MySampleData.id' => $id
        )
      );
      //$statusに入っている最初の要素を$dataに格納
      $data = $this->MySampleData->find('first', $status);
    } else {
      $data = null;
    }
    //$dataをset
    $this->set('data',$data);
  }
}

View/MySampleDatas/find.ctpの記述内容

参考ページにならって以下の通り。

//このページ./find自身にsubmit
<form method="post" action="./find">
  ID:<input type="text" name="id" />
  <input type="submit" />
</form>

<table>
<?php if (isset($data)): ?>
  <tr>
    <td>Name:</td>
    <td><?php echo $data['MySampleData']['name']; ?></td>
  </tr>
  <tr>
    <td>Mail:</td>
    <td><?php echo $data['MySampleData']['mail']; ?></td>
  </tr>
  <tr>
    <td>Tel:</td>
    <td><?php echo $data['MySampleData']['tel']; ?></td>
  </tr>
<?php endif; ?>
</table>

このソースコードについて

コメントに書いた。

conditions以外の第二引数についてはこういうのがあるんだなー。ってことだけ読んで、また今度。

今回はここまで。