cakePHP アソシエーション

トラックバック(0) コメント(0)
モデル間のリレーションにはアソシエーションというものを使うらしい
リレーションなんかさせなくっても個別にやればいいじゃん
とか思ってたんですけど単純なJOIN程度ならcakeがやってくれちゃうようです

4種類あって
  • hasOne(user->profile個人とプロフィール)

  • hasMany(diary->comnt日記とコメント)

  • belongsTo(team->memberチームとメンバ)

  • hasAndBelongsToMany(日記のタグ見たいなつなぎのテーブル作って見たいなもの)

のような感じで設定できます
設定方法は
<?php
class Gym extends AppModel
{
    var $name = 'Gym';
    var $hasMany = array('Fighter'  =>
                         array('className'  => 'Fighter',
                               'conditions' => '',
                               'order'      => 'Fighter.p_name DESC',
                               'dependent'  =>  true,
                               'exclusive'  => false,
                               'foreignKey' => 'gym_id',
                               'finderQuery' => ''
                            )
                        );
    var $belongsTo = array('Country'    =>
                         array('className'  => 'Country',
                               'conditions' => '',
                               'foreignKey' => 'country_id',
                               'dependent'  =>  true,
                               'exclusive'  => false,
                               'finderQuery' => ''
                            )
                        );
こんな感じです
}

foreignKeyには関連付けに利用する外部キーを設定する

これをしておくと例えばhasMenyが設定されているPostの場合
$this->Post->findAll()
とするとコメントの一覧もあわせて取得できたりする


トラックバック(0)

このブログ記事を参照しているブログ一覧: cakePHP アソシエーション

このブログ記事に対するトラックバックURL: http://kashioka.net/cgi-bin/mt/mt-tb.cgi/140

コメントする

最近のブログ記事

windows XP でネットワークが表示されない
システムが不安定になっていたマシンがあっ…
MySqlインサート時の文字化け
最近は全部UTF8で作成しちゃっててPH…
Vistaにおけるhostsファイルの書き換え
DNS設定が完了するまでhostsファイ…