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

アソシエーション利用のデータアクセス (1) (2/6)

作成:2015-11-07 10:50
更新:2015-11-07 10:50

■Membersのデータ取得

では、順番に処理を見ていきましょう。まずは、Member側の処理からです。最初に、基本ともいえる「データの取得(Read)」から考えていきましょう。

データの一覧は、indexアクションとして作成するのが一般的でしょう。下に、その基本的なメソッドを挙げておきました。見ればわかるように、処理は非常にシンプルです。

ページネーションで使ったpaginateメソッドでMembersのデータを取得し、それをmembers変数に設定します。またデータの初期化などに用いられる_serialize変数にはmembersを指定しています。

渡されたデータは、index.ctp側で出力します。これは、ざっと以下のような感じになるでしょう。
<tbody>
<?php foreach ($members as $member): ?>
<tr>
    <td><?= $this->Number->format($member->id) ?></td>
    <td><?= __($member->name) ?></td>
    <td class="actions">
        <?= $this->Html->link(__('View'),
            ['action' => 'view', $member->id]) ?>
        <?= $this->Html->link(__('Edit'),
            ['action' => 'edit', $member->id]) ?>
        <?= $this->Form->postLink(__('Delete'), ['action' => 'delete',
            $member->id],
            ['confirm' => __('Are you sure you want to delete # {0}?',
             $member->id)]) ?>
    </td>
</tr>
<?php endforeach; ?>
</tbody>

foreach ($members as $member)として、$membersから順にデータを$memberに代入していきます。そして、$member->id$member->nameというようにしてデータのIDやnameの値を出力していきます。この辺りは、普通のデータベース・アクセスと何ら変わりありません。

あわせて、データの内容を表示する「View」、編集する「Edit」、削除する「Delete」といったリンクも用意しておきました。これらは、以下のような形でリンクを作成しています。
<?= $this->Html->link(__('View'), ['action' => 'view', 
    $member->id]) ?>

これはHtmlヘルパーというものの機能を使っています。Htmlヘルパーは、HTMLタグを出力するための機能を提供するもので、linkメソッドは<a>タグによるリンクを生成します。['action' => 'view', $member->id]というように、アクションとIDを連想配列にまとめて渡すことで、そのアクションにアクセスするためのURLを生成し、リンクを作ってくれるのです。例えばID = 1ならば、 http://localhost:8765/members/view/1 といったアドレスへのリンクが作成されます。

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

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

●プログラム・リスト●

public function index()
{
    $this->set('members', $this->paginate($this->Members));
    $this->set('_serialize', ['members']);
}

※関連コンテンツ

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