[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 09/24 18:53 / Filesize : 35 KB / Number-of Response : 144
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】フレームワーク CakePHP 2ホール目



1 名前:nobodyさん mailto:sage [2007/11/14(水) 02:50:28 ID:???]
本家
www.cakephp.org/

10分で作るCakePHPアプリ for Windows
p4life.jp/cake/

マニュアル日本語化
www.cakephp.jp/doc/

日本語フォーラム
cakephp.jp/modules/newbb/

あとこのへんとか(初心者向けTIPS)
www.avatarfinancial.com/pages/cake/


137 名前:nobodyさん [2007/12/19(水) 19:37:24 ID:nmvrwuDT]
recursiveが2以上のアソシエーションを動的に変更する方法がよくわからない。

例えば
blog
ってテーブルがhasManyで
post
ってテーブル持ってて、そのまたさらにhasManyで
comment
ってテーブルを持ってたとする。

普段はそれぞれは一覧で表示したいのでlimitを10くらいに設定してるんだけど、
ブログの一覧からpostとそれに紐付くcommentを全て取得する際に
$this->Blog->findAll();
でコメントだけはlimitを3にしたい。

$this->Post->hasMany['Comment']['limit'] = 3;
$this->Post->bindModel(array('hasMany' => array('Comment' => array('limit' => 3))));
とか試したけど、もう無理。

何か間違ってる?

138 名前:nobodyさん mailto:sage [2007/12/20(木) 02:56:46 ID:???]
出来ないこともないが、
テーブル名を複数形にしない時点で
自分で調べてなさすぎ感が伝わってきて
アドバイスしたい気持ちになれない。

139 名前:1/3 [2007/12/20(木) 04:06:27 ID:XdoaO407]
調べてないつもりではないんだけど、確かに情報を小出しにしてるこちらが悪かった。
ごめんなさい。
誤解を生まないようにもう一度説明すると、
blogs テーブルはBlogモデルの中で
var $hasMany = array('Post' => array('classname' => 'Post', 'limit' => 10));

postsテーブルではPostモデルで
var $hasMany = array('Comment' => array('classname' => 'Comment', 'limit' => 10));

そいで最後に
commentテーブルがCommentモデルでそれぞれ定義されてたとして。


普通はコントローラーで最初に
var $uses = array('Blog', 'Post', 'Comment');
ってやっておいて、
$blogs = $this->Blog->findAll(null,null,null,null,null, $recursive = 2);
でそれぞれ
count($blogs['Posts']);// が10件
count($blogs['Posts']['Comments']);// が10件
入るよね。

140 名前:2/3 [2007/12/20(木) 04:06:58 ID:XdoaO407]
でもblogの一覧から全てのPostとCommentを取り出すのがリs−スが勿体無いときがあったとして、
 1.Postを3件だけ取り出したい
 2.Commentを3件だけ取り出したい
とすれば、

1のPostのほうは
$this->Blog->hasMany['Post']['limit'] = 3;
なり
$this->Blog->bindModel(array('hasMany' => array('Post' => array('limit' => 3))));
なりしてやればあとは
$blogs = $this->Blog->findAll(null,null,null,null,null, $recursive = 2);
で3件だけPostを取り出せるんだけど、

2に関しては
$this->Post->hasMany['Comment']['limit'] = 3;
をやっても
$this->Post->bindModel(array('hasMany' => array('Comment' => array('limit' => 3))));
をやっても、
その後
$blogs = $this->Blog->findAll(null,null,null,null,null, $recursive = 2);
これをすると
count($blogs['Posts']['Comments']);
は10件取り出されてしまうんですよ。

141 名前:3/3 [2007/12/20(木) 04:07:32 ID:XdoaO407]
自分では
$this->Blog->findAll()
でblogsテーブルの直下のhasManyは動的にアソシエーションできるんだけど、
そのさらに下のアソシエーションに関しては動的に変更できなくて悩んでるんだけど、
何か決定的に間違ってる?
普通は出来るもんなんだったら、
別のところで自分が途方も無いケアレスミスを犯しててたまたま出来てないだけだってわかるだけでも
対策考えれるからありがたいんですけど。

142 名前:nobodyさん mailto:sage [2007/12/20(木) 04:10:41 ID:???]
あああ、推敲したはずなのに…。
>>139
> そいで最後に
> commentテーブルがCommentモデルでそれぞれ定義されてたとして。



> そいで最後に
> commentsテーブルがCommentモデルでそれぞれ定義されてたとして。
       ~~

の間違いです。
重ね重ねごめんなさい。

143 名前:nobodyさん [2007/12/20(木) 13:00:08 ID:rEyzQF0b]
$this->Blog->Post->hasMany['Comment']['limit'] = 3;






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<35KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef