2011年11月02日

cakephp hasAndBelongsToMany を極める

お願いします♪いいねとかつぶやいたりして下さい
 
cakephp 多対多 hasAndBelongsToMany

タグで検索したい場合

ちょっと複雑。 FilterTagってのは固定。
これで FilterTag.id が 88 のデータを $this->Sponcer->find と同じデータ型で
取得することができる。


○paginate

containする場合は Filtertag と SponcerTag をそれぞれ用意しないとエラーになる。
$this->paginate = array(  
    'Writer' =>  
array(
'group'=>'Writer.id',//これが無いとデータが複数でてきちゃう
    'conditions' => array(  
        'FilterTag.id' => '88',
    ),  
        'limit' => 10,  
        'order' => array('Writer.point' => 'desc'),
        'fields' => array('id','user_id','url','info','point','adtype'),
        'page' => 1,  
        'contain' => array(  
            'FilterTag' => array(
                'fields' => array('id','name','use')
            ),
            'SponcersTag' => array(
                'fields' => array('sponcer_id','tag_id')
            ),
            
        )
    )
);


○find編

$this->Writer->bindModel(array(
'hasOne' => array(
'SponcersTag',
'FilterTag' => array(
    'className' => 'Tag',
    'foreignKey' => false,
    'conditions' => array('FilterTag.id = SponcersTag.tag_id')
))));


$tag = $this->Writer->find('all', array(
'fields' => array('Writer.*'),
'conditions'=>array('FilterTag.id' => '88')
));



Sponcer に広告主データ
Tag に広告主の タグデータ
SponcersTag は Sponcer と Tag を結びつける専用テーブル

モデル → DB名
Sponcer → hoge_sponcers
Tag → hoge_tags
SponcersTag → hoge_sponcers_tags

sponcer.php
class Sponcer extends AppModel {
/*
タグ関連付け用
*/
var $hasAndBelongsToMany = array(
'Tag'
);
}


tag.php
class Tag extends AppModel {

}


sponcers_tag.php
class SponcersTag extends AppModel {

}


find したい

$this->Sponcer->hasAndBelongsToMany['Tag']['conditions'] = array('use' => 0);
$res = $this->Sponcer->find('all',array('order' => 'Sponcer.id desc' , 'limit' => '3'));[0] => Array
(
[Sponcer] => Array
(
[id] => 1945
[user_id] => 1
[url] => http://www.host-sweet.com
[info] => 出張ホストSWEETのサイトです。ホスト募集中。
[write_count] => 5
[adtype] => 1
[point] => 305
[end_flag] => 0
[sendedemail] => 0
[created] => 2011-11-02 15:41:13
)

[Tag] => Array
(
[0] => Array
(
[id] => 27
[name] => 出張ホストSWEET
[use] => 0
)

[1] => Array
(
[id] => 28
[name] => ホスト募集中
[use] => 0
)

[2] => Array
(
[id] => 17
[name] => サイト
[use] => 0
)

)

)
関連するタグ: cakephp
あなたにとって有用な記事でしたか?是非ブックマークしておくことをおすすめします。
 




ライブラリを配布しちゃったり
webデザイン
Fireworks
HTMLコーディング
CSS
Dreamweaver
携帯サイト
webプログラム
PHP
正規表現
cakephp
MYSQL
javascript
webマーケティング
adwords
analytics
windows7
ショートカットキー
おすすめ情報
サイト
facebook
ライブラリ
配布
アプリ
iphone
ipad
サーバー
さくらサーバー
全ての記事を読む




トップ - 最新の記事一覧 - お問い合わせ