libro
www.tuyano.com
初心者のためのCakePHP3 プログラミング入門

データベース検索の基本 (1/5)

作成:2015-09-26 10:14
更新:2015-09-26 10:30

■検索用フォームを用意する

データベースは、必要に応じて的確にデータを取り出せてこそ役に立ちます。そのために不可欠なのが「検索」の機能です。CakePHPには、検索に関する機能が一通り用意されており、さまざまな形でデータを取得することができます。

今回も、引き続きPersonsモデルを使って説明をしていくことにしましょう。まずは、検索機能を利用するためのテンプレートを用意しておきます。「Template」フォルダ内の「Persons」フォルダの中に、「find.ctp」というファイルを作成し、下のリスト欄のように記述して下さい。

今回は、検索のための簡単なフォームと、検索結果を一覧表示するテーブルタグを用意してあります。検索フォームには、
<?= $this->Form->input('find'); ?>

このようにして、findという名前の入力フィールドを1つだけ用意してあります。またテーブルタグでは、
<?php foreach ($persons as $person): ?>

このように、$personsから順に値を取り出し$personに代入して、検索されたエンティティの内容を繰り返し出力するようにしてあります。

コントローラー側で、フォームから送信されたfindの値を取り出して検索を行い、その結果を$personsに代入する処理を用意すれば、findアクションが完成する、というわけですね。――では、このテンプレートを利用する形で、検索の処理を作成していきましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<div>
    <h3>Find Person</h3>
    <?= $msg ?>
    <?= $this->Form->create() ?>
    <fieldset>
        <?= $this->Form->input('find'); ?>
        <?= $this->Form->button('Submit') ?>
        <?= $this->Form->end() ?>
    </fieldset>
    <table>
    <thead>
        <tr>
            <th>ID</th>
            <th>NAME</th>
            <th>AGE</th>
            <th>MAIL</th>
        </tr>
    </thead>
    <tbody>
    <?php foreach ($persons as $person): ?>
        <tr>
            <td><?= h($person->id) ?></td>
            <td><?= h($person->name) ?></td>
            <td><?= h($person->age) ?></td>
            <td><?= h($person->mail) ?></td>
        </tr>
            <?php endforeach; ?>
            </tbody>
    </table>
</div>

※関連コンテンツ

「初心者のためのCakePHP3 プログラミング入門」に戻る