skillup

技術ブログ

PHP

cakePHPでの多対多について

投稿日:2016年2月16日 更新日:

cakePHPで多対多のリレーションを使う機会があったので、その時のメモなどを。

多対多を説明するときには例によってブログの投稿(Item)とタグ(Tag)の関係が一番わかりやすいですね。

テーブル構成

テーブル構成が下記のようだったとします。

※実際はitemとtagはいろんなプロパティを持ってますが説明のために簡略化してます。

relation

ソース

実際にリレーションでitemからtag、あるいはtagからitemを取得するときは下記のように取得します。

基本的にはItemとTagのモデルに多対多の設定を書けばOKです。

Item.php

Tag.php

あとはControllerで普通にpaginateやfindメソッドを使用すれば、お互いのデータを紐付けて取得することができます。

リンク

hasAndBelongsToManyを活用して多対多のデータモデルを構築する方法

http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html

-PHP
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

composer最低保証のバージョンを管理

自分の開発端末ではPHPのバージョンが7.1何ですが、上げなければいけないサーバーのバージョンが7.0だったりして、

みたいなエラーが …

no image

cakePHP3での複数データベース接続

cakePHP3で複数のデータベースに接続することができます。 まず設定ファイルで複数のデータベースを定義します。(defaultはそのままにしておきます。) [crayon-60d23f991ec3 …

no image

herokuでのmb_convert_encoding

herokuにあげたアプリを起動しようとしたらmb_convert_encodingでundefinedエラーが帰ってきました。 どうやらマルチバイトのライブラリがないエラーのようですね。 といいつつ …

no image

Laravelでのmiddlewareの実行順番

Laravelでのmiddlewareをいじって認証直後の処理を作りたいときなど。 例えばログイン後、ユーザーidに応じた共通処理などをかませたいときです。 この場合、当然ログインの後に処理を実行しな …

no image

cake3でのバッチスクリプト

以前、cakeでのバッチをこちらのエントリーで書きましたが、今回は3系でのバッチの書き方について。 といってもほとんど同じですが・・・ Contents1 ディレクトリ2 ソース ディレクトリ src …