CakePHP2×WordPressでなんとかリレーション組んで記事とタグを表示させる


みなさんこんにちは!!

以前CakePHPとWordPressでアプリを組んだのでリレーションとか色々書いていこうと思います。
WordPressではデータを入力、保存するのみで、主なデータ表示はCakePHPで行いました。


それでは以下が目次です。

WordPressのデータをCakePHPで取得するために設定する

CakePHPとWordPressはインストール済み、また記事は何個か入っている、タグも何個か設定してある前提でやっていきます。

今回やるのは「記事からその記事に結びついているタグを表示する」ことと「タグからそのタグが結びついている記事を表示する」ことです。
自分でもちょっとおかしいと思うところは結構ありますw

WordPressのデータベースの構造は以下を見ればわかります。
http://wpdocs.sourceforge.jp/データベース構造

CakePHPではきつそうな部分が混ざってますがそこはスルーしましょう。
ここでやりたいことは記事に対するタグを引っ張ってくることです。

それではやっていきましょう。
いじっていくテーブルは、wp_postswp_term_relationshipswp_term_taxonomywp_termsの4つです。
なのでそれに対応するModelを作っていきます。

wp_postswp_term_relationshipsを持っているので以下のように書きます。

Posts.php

wp_term_relationshipsはこんな感じです。ちょっとつっこみたいのはよくわかる。。。

TermRelationship.php

wp_term_taxonomy

TermTaxonomy.php

そして最後。wp_terms

Term.php

これで設定完了です!お疲れ様です!

動作確認・実際に表示してみる

それでは最後に動作確認をしてみましょう。
たくさんのRelationを使うときはContainableBehaviorが便利なのでAppModelで読み込んでおきましょう。

AppModel.php

動作確認です。まずは記事からタグを引っ張りだす!

PostsController.php

階層の深い部分にありますがタグが一覧表示されていると思います!

ここまでわかれば簡単!タグから記事を表示しましょう。
PostsController.php

最後に

いかがでしたでしょうか。
少し無理やりでしたが、目標は達成出来たかと思います。
CakePHPのリレーションは「_id」がついているものを勝手につなげますが、それを利用したものと言えます。
もっと綺麗に実装出来そうですが、実際に実装していく場合は、findの条件の部分を覆い隠せば綺麗になると思います。

覆い隠す場合は以下の記事が参考になるかもしれません。

findせずにconditionsを返す、DRYなCakePHPのModel実装のススメ

CakePHPerなら持っておかねば!

Webアプリ開発を加速する CakePHP2定番レシピ119
長谷川 智希
秀和システム
売り上げランキング: 34,461

更新情報はFacebookページで!

ブログの更新、読んで役立つ他ブログの記事などを更新しています。




関連のある記事


質問があればこちらからどうぞ