アソシエーション利用のデータアクセス (1) (2/6)
作成:2015-11-07 10:50
更新:2015-11-07 10:50
更新:2015-11-07 10:50
■Membersのデータ取得
では、順番に処理を見ていきましょう。まずは、Member側の処理からです。最初に、基本ともいえる「データの取得(Read)」から考えていきましょう。
データの一覧は、indexアクションとして作成するのが一般的でしょう。下に、その基本的なメソッドを挙げておきました。見ればわかるように、処理は非常にシンプルです。
ページネーションで使ったpaginateメソッドでMembersのデータを取得し、それをmembers変数に設定します。またデータの初期化などに用いられる_serialize変数にはmembersを指定しています。
渡されたデータは、index.ctp側で出力します。これは、ざっと以下のような感じになるでしょう。
foreach ($members as $member)として、$membersから順にデータを$memberに代入していきます。そして、$member->id、$member->nameというようにしてデータのIDやnameの値を出力していきます。この辺りは、普通のデータベース・アクセスと何ら変わりありません。
あわせて、データの内容を表示する「View」、編集する「Edit」、削除する「Delete」といったリンクも用意しておきました。これらは、以下のような形でリンクを作成しています。
これはHtmlヘルパーというものの機能を使っています。Htmlヘルパーは、HTMLタグを出力するための機能を提供するもので、linkメソッドは<a>タグによるリンクを生成します。['action' => 'view', $member->id]というように、アクションとIDを連想配列にまとめて渡すことで、そのアクションにアクセスするためのURLを生成し、リンクを作ってくれるのです。例えばID = 1ならば、 http://localhost:8765/members/view/1 といったアドレスへのリンクが作成されます。
データの一覧は、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 といったアドレスへのリンクが作成されます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
public function index() { $this->set('members', $this->paginate($this->Members)); $this->set('_serialize', ['members']); }
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る