2010年08月26日

cakephp で innerjoin で paginate

お願いします♪いいねとかつぶやいたりして下さい
 
もう、死ぬ。
難しすぎる。

findallするだけじゃオナニーしてるのと変わらない。
paginateをしなければ・・・と思ってやってもこれまた超絶うんこむず。

ということで、

moterias テーブル
id
name


tag_names テーブル
id
title

user_tags テーブル
id
user_id
tagname_id


という三角関係だった場合に、

[ イケメン ]タグを持っているユーザーのみ読み出したい



コントローラー
$joins = array(
				array(
					'table' => 'mntra_usertags',
					'alias' => 'UserTag',
					'type' => 'INNER',
					'conditions' => 'UserTag.user_id = Moteria.id'
				),
				array(
					'table' => 'mntra_tagnames',
					'alias' => 'Tagname',
					'type' => 'INNER',
					'conditions' => 'Tagname.id = UserTag.tagname_id'
				)
			);
			
			$conditions = array(
				'OR' => array(
					'Tagname.title LIKE' => '%イケメン%'
				)
			);
	
				
			
			$this->paginate = array(
				'joins' => $joins,
				'conditions' => $conditions,
				'group' => array('Moteria.id')
			);
			
			$res = $this->paginate('Moteria');


これでいける。
joins の tableには prefix を含めて書く必要がある。

でもって上記の処理をしたら以下の結果になる。

Array
(
    [0] => Array
        (
            [Moteria] => Array
                (
                    [id] => 150
                    [created] => 2006-01-27 01:27:26
                    [modified] => 2010-06-28 14:18:54
                    [name] => 知幸
                    [sex] => 0
                    [email] => fefefe
                    [pass] => 5738
                    [price] => 0
                    [zipcode] => 0
                    [state] => 東京都
                    [city] => 千代田区
                    [place] => 0
                    [url] => 
                    [birthday] => 0000-00-00 00:00:00
                    [body] => 
                    [uid] => 25001032210649_mj.ezweb.ne.jp
                    [point] => 0
                    [okgold] => 0
                    [okgold_lastweek] => 0
                    [okgold_thisweek] => 0
                    [mode] => 0
                    [ngemail] => 0
                    [endtime] => 0000-00-00 00:00:00
                    [fukugyou] => 0
                    [x] => 139.7535951
                    [y] => 35.6940027
                    [rand] => 0
                )

            [Attachment] => Array
                (
                )

            [Usertag] => Array
                (
                    [0] => Array
                        (
                            [id] => 170
                            [user_id] => 150
                            [tagname_id] => 81
                            [created] => 0000-00-00
                        )

                )

        )

    [1] => Array
        (
            [Moteria] => Array
                (
                    [id] => 155
                    [created] => 2010-02-19 17:20:25
                    [modified] => 2010-06-28 14:18:54
                    [name] => うう
                    [sex] => 0
                    [email] => aaaa
                    [pass] => 5738
                    [price] => 0
                    [zipcode] => 0
                    [state] => 愛知
                    [city] => 一宮市
                    [place] => 0
                    [url] => 
                    [birthday] => 0000-00-00 00:00:00
                    [body] => 
                    [uid] => 
                    [point] => 0
                    [okgold] => 0
                    [okgold_lastweek] => 0
                    [okgold_thisweek] => 0
                    [mode] => 1
                    [ngemail] => 0
                    [endtime] => 0000-00-00 00:00:00
                    [fukugyou] => 0
                    [x] => 140.3704497
                    [y] => 35.3693829
                    [rand] => 0
                )

            [Attachment] => Array
                (
                )

            [Usertag] => Array
                (
                    [0] => Array
                        (
                            [id] => 169
                            [user_id] => 155
                            [tagname_id] => 81
                            [created] => 0000-00-00
                        )

                )

        )



Attachment含まれてるけど、みんなユーザータグ持ってるでしょ。
で、とりあえずこれで下準備はオッケー。
まだページカウントをやらんといかん。

もう死にそう。
参考:
http://www.qudan.net/?p=224

ありがとうございました!
関連するタグ: PHP cakephp MYSQL
あなたにとって有用な記事でしたか?是非ブックマークしておくことをおすすめします。
 




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




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