skillup

技術ブログ

PHP

cakePHPでの多対多について

投稿日:

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

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

テーブル構成

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

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

relation

ソース

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

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

Item.php

Tag.php

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

リンク

http://dim5.net/cakephp/hasandbelongstomany-configuration.html

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

-PHP
-

執筆者:


comment

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

関連記事

no image

cakeでのトランザクション、コミット、ロールバック

cakePHP(2.X系)でのトランザクション、コミット、ロールバックについて。 cakePHPでトランザクションを書ける場合、Model内に [crayon-5da3c8ce42a808595732 …

no image

ロケール情報について

本日、csvファイルを読み込む処理を行っていたんですが、コンソールからコマンドを打つと化けずに、ウェブ上で見ると化けるという現象が発生。 csv,プログラムともに文字コードがutf8で統一していること …

no image

コード静的解析ツールを使った際の気づきなど

最近のプロジェクトでコード静的解析ツール(phpcs,phpmd)を使った際の気づきなど コードを書きながら常時エディタがチェックするタイプのものでないとまず無理(保存するたびでも無理だし、コミット時 …

no image

テンプレートエンジンTwigについて

SmartyにかわるテンプレートエンジンとしてTwig(ツィッグ)を勉強中。 といってもテンプレートエンジンなので基本的なことはほとんど一緒っぽいですが。 Contents1 インストール2 基本的な …

no image

laravel+vessel

現場のリーダー的な方に進められてVesselというDockerのインストールなどをサポートするツールを触ってみました。 特にlaravelのインストールなどに向いていますが、laravelでなくとも使 …