- 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/
- 50 名前:nobodyさん mailto:sage [2007/11/23(金) 17:34:58 ID:???]
- >>49
そういう人用のヘルパーだと思われるよ。 普通に書きたきゃ書けばいいし、ライブラリ使いたきゃ使えばいい。 まずいも何もないと思う。
- 51 名前:nobodyさん mailto:sage [2007/11/23(金) 18:26:39 ID:???]
- ログインしてなかったら「ここは何々のページです。ログインしてください。」みたいに、viewの表示を変えるとかってview側でif分岐するしかないのかな。
あまりviewにロジック組みたくないんだが。
- 52 名前:nobodyさん mailto:sage [2007/11/23(金) 18:38:55 ID:???]
- 普通ログインが必要なページにリクエストしてきて
ログインしてなかったら一括でログイン促すページにリダイレクトだろ おまえwebアプリ作ったことあるのか?
- 53 名前:nobodyさん mailto:sage [2007/11/23(金) 21:16:55 ID:???]
- >>50
そうですか、助かりました。 でも少しはAjax, Javascriptの本もかじってみようと思います。 ありがとうございました。
- 54 名前:nobodyさん mailto:sage [2007/11/23(金) 21:17:41 ID:???]
- ログインしてなかったら「ログイン」
してたら「ログアウト」を表示したいってことじゃないの?
- 55 名前:nobodyさん mailto:sage [2007/11/24(土) 04:15:26 ID:???]
- いやそのページが何をするページかだけ説明をいれたいから飛ばすとかは無理。さすがにWebアプリ未経験ではないわ。
ログインしてない時はグローバルナビのリンク先urlでも変えて、ログインフォームと新規登録リンクと個別説明ページに飛ばすか できれば同じurlにしたかったが。
- 56 名前:nobodyさん mailto:sage [2007/11/24(土) 04:17:02 ID:???]
- なんか意味わからない文章なったから放置で…
- 57 名前:nobodyさん mailto:sage [2007/11/24(土) 07:36:32 ID:???]
- よくわかんないけど「ここは何々のページです。ログインしてください。」って
テンプレートだけ作ってコントローラから何々の部分のメッセージを設定して renderればいいんじゃないのん
- 58 名前:nobodyさん mailto:sage [2007/11/24(土) 13:35:28 ID:???]
- >>55
お前、Webアプリ未経験者だなw
- 59 名前:nobodyさん [2007/11/24(土) 14:44:27 ID:+GWOZRBH]
- 僕は
○ログインしている場合 view/layout/default.thtml に if($_SESSION['Login']['email'] != ''){ $this->render('loginok.thtml');} (ログイン中のエレメントを表示させる) ○ログインしていない場合 view/layout/default.thtml if($_SESSION['Login']['email'] == ''){ $this->render('loginng.thtml');} (ログインしてね♪ボックスを表示させる) という処理でわけてますね。 わかりやすいし、いいと思いますよ。
- 60 名前:nobodyさん mailto:sage [2007/11/24(土) 16:57:12 ID:???]
- どっちにしろviewでロジックは入れなきゃいけないね。
エレメントにしておいて、コントローラで切り替えるってのはいいかも。
- 61 名前:nobodyさん mailto:sage [2007/11/25(日) 03:26:25 ID:???]
- Cake1.2系使ってみてるんだけど、Viewでエラー出すときのメソッドって変わってるよね?
<?php echo $html->tagErrorMsg('Post/body', '本文は必ず入力してください。')みたいだったやつ。 Modelでメッセージ内容決められるようになったから。 あとエラーって一個ずつしか出ないけどまとめて表示とか出来ないの? <?php echo $html->tagErrorMsg('Post/body', '本文は必ず入力してください。') ?>
- 62 名前:nobodyさん mailto:sage [2007/11/25(日) 08:44:45 ID:???]
- >>61
$form->input()を使えばエラーも一緒に表示されるようになる。 エラー文はmodelでも指定できるし、今まで通りControllerでも 指定できるけど、tagErrorMsgは無くなったので、inputの第二引数に messageとして渡してあげればOK。 一個のinputに対してエラーを全部表示するのはコアを触らないと 無理じゃないかな。よく知らん。
- 63 名前:nobodyさん mailto:sage [2007/11/25(日) 20:28:15 ID:???]
- お答えありがとう。
一個ずつしか出ないならJavascriptの使用を強制してエラー出してあげるしかないかな
- 64 名前:nobodyさん mailto:sage [2007/11/25(日) 22:38:25 ID:???]
- フォーム周りやヴァリデーションに関してはEthnaのほうがわかりやすいなぁ
- 65 名前:nobodyさん mailto:sage [2007/11/26(月) 00:36:21 ID:???]
- べ、勉強会、ど、どうだったの!?アッー
- 66 名前:nobodyさん mailto:sage [2007/11/26(月) 21:19:27 ID:???]
- ケーキももう腐りかけなんかなぁ
- 67 名前:nobodyさん [2007/11/26(月) 21:32:38 ID:g6VI9o/i]
- 今勉強中だからそれは勘弁して欲しい。
- 68 名前:nobodyさん mailto:sage [2007/11/26(月) 22:20:15 ID:???]
- Railsにようこそ
- 69 名前:nobodyさん [2007/11/26(月) 22:37:57 ID:9laXyXH+]
- それは断る。
- 70 名前:nobodyさん mailto:sage [2007/11/27(火) 00:22:24 ID:???]
- このスレは、ホモが集まってんの?
- 71 名前:nobodyさん mailto:sage [2007/11/27(火) 04:42:44 ID:???]
- たしかに楽なんだけど
細かい部分で変な仕様っていうか不具合っていうか いまいちな動作するよねえ validationとかsaveとか おかげでソースとにらめっこで時間かかる…
- 72 名前:nobodyさん [2007/11/27(火) 07:25:54 ID:q198YkJr]
- もちろんフィードバックはしてるんだよな?
- 73 名前:nobodyさん mailto:sage [2007/11/27(火) 09:33:56 ID:???]
- validationは2系ならよいんじゃ?
saveはidも更新されちゃうとかか?
- 74 名前:nobodyさん [2007/11/27(火) 11:12:10 ID:O5dAXXRh]
- テーブル設計のとき、外部キーは「テーブル名_id」と命名しますよね。
テーブル名が「prefix_テーブル名」の時は「prefix_テーブル名_id」となるんでしょうか? また、テーブル名は複数形ですか?
- 75 名前:nobodyさん mailto:sage [2007/11/27(火) 21:07:05 ID:???]
- 環境をまず言うべきだ
- 76 名前:nobodyさん mailto:sage [2007/11/27(火) 21:16:36 ID:???]
- >>72
そこまでまだ使いこんでない >>73 2は少しよさそうだね なんかわかりにくいというか 仕様が曖昧だよね まあ楽につくろうっていうのが趣旨だからしかたないのかもしれない もうちょっといじってみる
- 77 名前:nobodyさん mailto:sage [2007/11/27(火) 22:46:38 ID:???]
- >>74
日本人じゃないから仕方が無いけど、 単数と複数の意味を考えよう。 テーブルとは、レコードの集まりだ。 で、一つのレコードは、一つのもの。つまり単数だ。 だからレコードのID・・・つまり一つのもののIDなのだから 単数形_IDになる。 そしてその集まりであるテーブルは当然複数形となる。 ついでにいうと、テーブルのレコードに相当するModelは当然単数形だし、 そのモデル(単数)の一覧(複数)を表示したりするコントローラは複数形となる。 単数形と複数形の使い分けはこんな感じ、 あと残りの単語の区切りがアンダーバー区切りか頭大文字かはクラス名は頭大文字 ファイルやテーブルはアンダーバー区切りとなる。
- 78 名前:nobodyさん mailto:sage [2007/11/28(水) 00:30:00 ID:???]
- テーブル A hasMany B
テーブル B hasAndBelongsToMany A のときの A のデータの編集(新規追加)画面を作ってる Aの編集画面で、Bのデータを持ってきて表示・選択できるところまでできた で、Aのデータをsaveするときに、Bのデータのsaveとかvalidatesは自動でやってくれるの? この辺り、いまいちややこしいなああ
- 79 名前:nobodyさん mailto:sage [2007/11/28(水) 01:03:43 ID:???]
- >>78
続きだけど この場合、自前でvalidatesするときはどこでするの? AとBを関連づけるための A_Bテーブルも作ってるけど A_Bモデルでやるのかな? それともAモデル? Bモデルだとデータの形式が違うから AモデルかA_Bモデルだとは思うんだが…
- 80 名前:nobodyさん [2007/11/28(水) 03:05:53 ID:k8OzrBLt]
- 1.1で特定のコントローラーだけtagErrorMsgでエラーメッセージがでなくなったんですが、同じ現象にあたったひといませんか?
コントローラ内で pr($this->User->invalidFields()); とかってやるとちゃんとvalidateは行われているようなんですが・・・
- 81 名前:nobodyさん [2007/11/28(水) 14:51:33 ID:Zvh5a2IN]
- cakephp 動作がすげー重いような気がするんだけど・・・
どうなんすか。先輩方。
- 82 名前:nobodyさん mailto:sage [2007/11/28(水) 15:01:13 ID:???]
- 何と比べて?
ただの一枚のphpファイルだけで完結するものと データベースにアクセスするものを比べたら そりゃ重いのは当然だと思うが?
- 83 名前:nobodyさん mailto:sage [2007/11/28(水) 15:18:31 ID:???]
- CodeIgniterなどお召し上がり下さい、ふくよかなお方
- 84 名前:nobodyさん mailto:sage [2007/11/28(水) 20:51:41 ID:???]
- CakePHP使ってる人たちは、他のPHPフレームワークをどう見てる?
- 85 名前:nobodyさん mailto:sage [2007/11/28(水) 21:56:36 ID:???]
- railsは神
- 86 名前:nobodyさん [2007/11/29(木) 17:42:41 ID:IwtVKe0+]
- >>82
フレームワークcakephpを使ったプログラムと 普通にベタ書きでプログラムを書くのと比べて。
- 87 名前:nobodyさん mailto:sage [2007/11/29(木) 18:11:52 ID:???]
- 馬鹿すぎてわらた
- 88 名前:nobodyさん mailto:sage [2007/11/29(木) 21:15:28 ID:???]
- さすがにネタでしょう。
- 89 名前:nobodyさん [2007/11/30(金) 18:57:34 ID:uOWFJHM3]
- エラー文忘れましたけど、
fatal で 30秒どうのこうの・・・というエラーが出るんですよ。 更新キーを押してもなかなか表示しなかったり。 キャッシュ使わないときついんですかね。cakephp。 プログラムのみならある程度いけるんですが、画像使うともう厳しいくらい重いですね。 なんか良い方法ないでしょうか。
- 90 名前:nobodyさん mailto:sage [2007/11/30(金) 20:08:26 ID:???]
- 共有サーバやめたらいいんじゃないかな
- 91 名前:nobodyさん [2007/11/30(金) 21:45:10 ID:uOWFJHM3]
- >>90
ありがとうございます。 今でました。 Fatal error: Maximum execution time of 30 seconds exceeded in /home/hoge/www/hoge/cake/libs/session.php on line 154 セッション周りがおかしいんですかね〜。 ちなみにcakephp1.1 サクラサーバーのプロっていうレンタルサーバーですね。 レンタルサーバーでも他のプログラムならさくさく動くんですが・・・。
- 92 名前:nobodyさん mailto:sage [2007/11/30(金) 21:53:08 ID:???]
- そのエラーを出せと言われたら、俺は速攻で無限ループを書くだろうな。
- 93 名前:nobodyさん mailto:sage [2007/12/03(月) 19:35:14 ID:???]
- オマイラ一つのMVCセットを書くときにどんな順番や頭のロジックで書いてる?
- 94 名前:nobodyさん mailto:sage [2007/12/04(火) 19:21:59 ID:???]
- 複合で
- 95 名前:nobodyさん [2007/12/04(火) 19:35:56 ID:5jWwGUYJ]
- M C V の順番かな。
- 96 名前:nobodyさん mailto:sage [2007/12/04(火) 19:52:21 ID:???]
- 頭の中ではVMCの順で考えて、書くのはMCVかな。
話が変わってしまって申し訳ないけど、 1.2のcake/libs/session.phpの470行目 $config = CONFIGS . Configure::read('Session.cookie') . '.php'; ってなってるけど $config = CONFIGS . Configure::read('Session.save') . '.php'; の間違いじゃね? 1.1だと $config = CONFIGS . CAKE_SESSION_SAVE . '.php'; ってなってるし。 ticket出したいけど英語ができない・・・orz
- 97 名前:nobodyさん mailto:sage [2007/12/04(火) 20:01:17 ID:???]
- 1.2のcake/libs/session.phpの470行目
$config = CONFIGS . Configure::read('Session.cookie') . '.php'; ってなってるけど $config = CONFIGS . Configure::read('Session.save') . '.php'; の間違いじゃね? をそんまま訳せばいいだろw
- 98 名前:nobodyさん mailto:sage [2007/12/04(火) 21:09:42 ID:???]
- 機能の豊富さで1.2系つかいはじめたが、もしかしてまだ実用的には早かったかな?
全然話違うけど、フォームの確認画面はググってすぐ見つかる方法くらいしかないんだろうか。そもそもcake使っているものに確認画面が見当たらない
- 99 名前:nobodyさん mailto:sage [2007/12/04(火) 22:56:12 ID:???]
- おい。おまいら。ここクリックしてみろ!
運がよければいいことがあるぜ! localhost/users/deletel/1
- 100 名前:nobodyさん mailto:sage [2007/12/05(水) 01:13:52 ID:???]
- deletelにしてる奴いるのか?
- 101 名前:nobodyさん mailto:sage [2007/12/05(水) 13:38:48 ID:???]
- せめてtinyurlとか使うだろ常考…
心優しい奴だな
- 102 名前:nobodyさん mailto:sage [2007/12/05(水) 15:45:18 ID:???]
- deletelわらた
- 103 名前:nobodyさん mailto:sage [2007/12/05(水) 19:21:03 ID:???]
- いま気づいたw
- 104 名前:nobodyさん mailto:sage [2007/12/06(木) 08:26:19 ID:???]
- なんかログイン画面がでてきたよw
- 105 名前:nobodyさん mailto:sage [2007/12/08(土) 10:30:04 ID:???]
- api.cakephp.org/classes.htmlを
IE6で見たらなぜかクラス一覧が表示されないんだが これって漏れのPCだけ? IE7とかFirefoxであれば普通に表示されるからそっちで見てるんだけど・・・ セキュリティ設定の問題かなと思って低めにしたけどやっぱ表示されねぇw なんでや〜〜〜?
- 106 名前:nobodyさん mailto:sage [2007/12/08(土) 11:38:27 ID:???]
- IEイラネって事でしょ
- 107 名前:nobodyさん mailto:sage [2007/12/11(火) 11:02:44 ID:???]
- ttp://www.cakephp.jp/doc/apas12.html
のeditのsaveの引数はなぜ $this->dataではなく$this->data['Post']なのでしょうか?
- 108 名前:nobodyさん [2007/12/11(火) 12:31:59 ID:fmpEROAG]
- >>107
タイトル: <?php echo $html->input('Post/title', array('size' => '40'))?> っていうのは $this->data['Post']['title'] に格納されるから。 ようは $this->data['Post'] ってのは Postモデルのデータってこと。 よくわからなければ まず pr($this->data); をやってみるとセクシーになるよ。
- 109 名前:nobodyさん mailto:sage [2007/12/11(火) 15:27:06 ID:???]
- いや〜ん
- 110 名前:nobodyさん mailto:sage [2007/12/11(火) 15:43:20 ID:???]
- あは〜ん
- 111 名前:nobodyさん mailto:sage [2007/12/11(火) 15:53:50 ID:???]
- あのー
意図的に404エラー出したいときはどうすればいいですか? AppController内で404エラーページを表示する共通のメソッドがあるんだけど どうもうまくいかないっす $this->cakeError('error404', array(array('url' => ???))); こんな感じかなあという感じなんですけど ???の部分がわからない $this->cakeError('error404', null); とかにすると $param['url'] か $param['action'] がないっておこられてしまいます デフォの404エラーページが表示できればいいんですけど なんかいい方法ないですかあ?
- 112 名前:111 mailto:sage [2007/12/11(火) 15:55:13 ID:???]
- あ、ちなみにビューを切り替えるとかいうのはなしでお願いします
HTTPステータスコードが404にならないと思うので… よい方法があればおたすけください…
- 113 名前:107 mailto:sage [2007/12/11(火) 15:58:30 ID:???]
- >>107
ありがとうございます。それは理解しているつもりなのですがaddの時は $this->Post->save($this->data) でeditの時は $this->Post->save($this->data['Post']) なのはどうしてでしょうか?実際$this->Post->save($this->data)でも 更新されるようですし。
- 114 名前:nobodyさん [2007/12/11(火) 17:40:19 ID:MudQMHo6]
- フレームワークでファイルのアップロード処理を書くと、どうも不細工になってしまう。
うまくフレームワークとなじませられないというか・・・。
- 115 名前:nobodyさん mailto:sage [2007/12/11(火) 18:05:21 ID:???]
- >>111
ソース見たらURLは単にメッセージ表示のために使われているだけみたいだから こんなのでもいいんじゃないの? cake 1.2 pre-betaの場合。 $this->cakeError('error404',array(array('url'=>'アドレスバーに書いてあるURLミロ')));
- 116 名前:111 mailto:sage [2007/12/11(火) 18:17:07 ID:???]
- >>115
レスありがとうです やっぱりそんな感じになりますかあ AppControllerに書く場合、URLは $this->here とかでいいんでしょうか? なんかしっくりこない気がするんですけど 他にもよい方法ありましたらよろしくおねがいします
- 117 名前:nobodyさん mailto:sage [2007/12/11(火) 19:24:00 ID:???]
- マルチしね
無能
- 118 名前:nobodyさん mailto:sage [2007/12/11(火) 21:21:49 ID:???]
- >>113
書き方の違いでしょ。 この例の場合はどちらでもOKだと思う。 二つ以上のモデルに格納するデータをフォームから送るなら $this->dataにすべきだね。
- 119 名前:111 mailto:sage [2007/12/11(火) 22:52:21 ID:???]
- >>117
おれのこと? マルチなんかしてないけど? というか他にCakePHPのスレあったっけ?
- 120 名前:111 mailto:sage [2007/12/12(水) 00:43:10 ID:???]
- フォーラムにも同じような話題でてたんだな
しかし決めつけはひどいな 別人だよ >>117 おまえが無能だ んで、フォーラムにでてるように array(array('url' => 〜)) をつかうとうまくいかない場合ある array(array(action)) つかったほうがいい しかし、この辺りがCakePHPはなんかいまいちスマートじゃないね
- 121 名前:nobodyさん [2007/12/12(水) 13:47:30 ID:fuv5QvzR]
- モデルのヴァリデートにNgWord判定させるにはどうしたらいいのですか?
cake2日目ではまってまっすん
- 122 名前:nobodyさん mailto:sage [2007/12/13(木) 02:11:34 ID:???]
- 正規表現でそのワード弾けばいいんじゃない?
- 123 名前:121 mailto:sage [2007/12/13(木) 10:54:35 ID:???]
- >>122
レスありがとうございます。 正規表現ではじくのは考えたのですが、NGワードをDBで管理してあとから追加や削除をできるようにしたいのです。 ヴァリデートに関数呼び出しなどを書く方法はあるのでしょうか? 言葉足らずですみませんです。
- 124 名前:121 mailto:sage [2007/12/14(金) 13:58:00 ID:???]
- 自己解決しました
validate() をオバーライドするか、別途関数を呼び出してチェックすればいいみたいです。 save()の第二引数に falseを指定すれば、save時にヴァリデートしなくなるようです。
- 125 名前:nobodyさん [2007/12/14(金) 23:47:10 ID:dPU6DaHz]
- オバーライドwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
- 126 名前:nobodyさん mailto:sage [2007/12/15(土) 02:49:30 ID:???]
- 一つのテーブルに10個のフィールドがあるとして半分ずつを別の機会にsaveしたい時は後に保存するほうは空の値を許可するにしなきゃいけないんだろうか。すべて必須項目にしたいんだが。
自分でModelに複雑なValidationを実装するのかな
- 127 名前:nobodyさん [2007/12/15(土) 05:19:24 ID:Ybu1PDKf]
- CakeSWXPHPの使い方で良いサイト知らない?
ActionScriptの方の使い方が難しくて、何かわかりやすいサンプルを探してるんだけど。 具体的にはFlexのMXMLとの連携のコードを全て公開してくれてるところ。
- 128 名前:cWTrQzhwyu mailto:tfcbks@wxejbj.com [2007/12/15(土) 05:32:32 ID:???]
- w8dffW <a href="tjfirgbtchzm.com/">tjfirgbtchzm</a>, [url=skatqimodaiu.com/]skatqimodaiu[/url], [link=bjtumegdtulp.com/]bjtumegdtulp[/link], uteijdlqllxz.com/
- 129 名前:nobodyさん mailto:sage [2007/12/18(火) 02:17:35 ID:???]
- 1.2系だとHABTMも標準でsaveできるようになったんな。すごい便利
- 130 名前:nobodyさん mailto:sage [2007/12/18(火) 02:25:56 ID:???]
- >>129
諸刃の剣の悪寒 いじりたいときは返って面倒 まあそのまま使うときはよさそうだね
- 131 名前:nobodyさん mailto:sage [2007/12/18(火) 11:36:32 ID:???]
- モデル書くときって簡単なSQLでもfindとか使わずに
queryでSQL文が見えてた方が開発効率がよくね?
- 132 名前:nobodyさん mailto:sage [2007/12/18(火) 19:39:14 ID:???]
- 返ってくるデータが予測つかない人はそうだな
- 133 名前:nobodyさん mailto:sage [2007/12/19(水) 02:24:25 ID:???]
- >>131
俺はすでにそれじゃだめだな。 CakePHPつかう以前からの話だが、 何かのデータを保存・・・時にほかのテーブルにも保存 なんて処理をやりたいことがある。 SQLでいえばトリガーでやるところなのだが、 トリガーはDBMSに依存してしまう。 そういうときにフレームワークで処理を割り込ませられると便利。 CakePHPでいうBehaviorの仕事だ。
- 134 名前:nobodyさん mailto:sage [2007/12/19(水) 02:34:00 ID:???]
- それから、俺は、Behaviorを使うことで
SQL文の拡張のようなことをやっている。 たとえば・・・これは俺が実際に使っている例ではないんだが、 全文検索をするための構文はDBMSによって違う。 しかし、それがなんであれ, $conditions = array('field' => 'FULLTEXTSEARCH ' . $keyword); という風にFULLTEXTSEARCH キーワードを条件文に使用できる。 あとはBehaviorのbeforeFindで条件を調べて DBMSにあわせた適切な構文に置き換えるだけ。
- 135 名前:nobodyさん mailto:sage [2007/12/19(水) 11:09:58 ID:???]
- >>126
saveに渡す配列にフィールドのキーが存在しなければvalidationもされないし データ更新もされないから気にしないでOK
- 136 名前:nobodyさん mailto:sage [2007/12/19(水) 13:28:34 ID:???]
- Paginationまわりがわかりにくいと思うのは俺だけ? 特に1.2
フレームワークそのままの形だけの使い方をしている分にはいいんだけど データ取得の命令がfindAllがpaginate関数になったりと、 理由はわからなくは無いんだけど、どうも設計に違和感を感じる。 とりあえず、1.2用のコントローラー以外(たとえばComponent)でも 使えるような汎用的なコードを書いておくよ。といっても怪しいけどな。 変なことをしているかもしれん。まあ俺が見つけた方法ということで。 しかし、コントローラ以外からコントローラのpaginate変数を設定したり paginate関数を読んだりするのが気持ち悪い。 もっとスマートな方法ないのかな。 ※$controllerはどこからか取得 $model_name = 'Post'; loadModel($model_name); $model = new $model_name; $conditions = array('id' => '> 3'); $controller->paginate[$model_name] = array( 'limit'=>2, 'page'=>1, 'conditions'=>$conditions); $data = $controller->paginate($model); pr($data); //検索情報 pr($controller->params['paging'][$model_name]); //ページ情報
- 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;
|

|