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

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

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

■MembersとMessagesの関係

前回、MembersMessagesというモデルを作成し、アソシエーションの仕組みについて説明しました。モデル間の連携についてはだいたいわかりましたが、具体的にどのようにデータベース・アクセスを行えばいいのか、よくわからない、という人も多いことでしょう。今回は、CRUDの実装について見ていきましょう。

MembersMessagesは、「has Many」(逆からいえば、belongs to)の関係になっています。Membersに登録されているメンバーには、それぞれ複数のMessagesのメッセージが関連付けられます。Messagesには、関連するMembersのデータを示す外部キーが用意されており、これによってそのMessagesがどのMembersによって投稿されたのかがわかるようになっています。Messagesを投稿する際には、必ず投稿者のMembersのデータを示すIDを外部キーに指定するようになっています。

Members側は、普通のモデルとまったく同じでした。Messages側に飲み、外部キーが用意されていたわけですね。これらを踏まえて、データベースアクセスはどのようになるのか、考えてみましょう。

●Members側のアクセス
データ作成(Create)――これは、普通に作成すればいいだけですね。
データ取得(Read)――Membersのデータ取得そのものは普通のアクセスとおなじになるでしょう。ただし、取得したそれぞれのMembersには、関連するMessagesがあるはずです。これらも含めて取り出せることを考えなければいけません。
データ更新(Update)――Membersそのものの更新は特に難しくはありません。通常と同じでOKです。
データ削除(Delete)――Membersのデータ削除そのものは通常と同じですが、削除した場合、そのデータに関連付けられているMessagesのデータをどうするか考える必要があるでしょう。

●Message側のアクセス
データ作成(Create)――データ作成時には、そのデータが関連付けられるMembersデータのIDを、外部キーに指定する必要があります。
データ取得(Read)――Messagesのデータ取得そのものは普通のアクセスと同じですが、取得したそれぞれのMessageには、関連するMembersがありますから、それらもあわえて取得することを考えないといけません。
データ更新(Update)――データの更新そのものは特に難しくはありませんが、外部キーを変更し、別のMembersデータと関連付けられるようにする場合は、外部キーの指定を正しく行えるように注意する必要があるでしょう。
データ削除(Delete)――これは、普通のアクセスと同様に、ただ削除するだけでいいでしょう。

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

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

※関連コンテンツ

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