1 名前:nobodyさん [2008/03/14(金) 15:16:00 ID:HF9x5ODX] www.cakephp.org/ 10分で作るCakePHPアプリ for Windows p4life.jp/cake/ マニュアル日本語化 www.cakephp.jp/doc/ 日本語フォーラム cakephp.jp/modules/newbb/ あとこのへんとか(初心者向けTIPS) www.avatarfinancial.com/pages/cake/ CakePHP入門リンク集 ttp://pub.studio15.jp/2007/11/13/cakephp-links/ 【PHP】フレームワーク CakePHP 2ホール目 pc11.2ch.net/test/read.cgi/php/1194976228/ 【PHP】フレームワーク CakePHP pc11.2ch.net/test/read.cgi/php/1163850802/
621 名前:619 [2008/04/10(木) 00:04:23 ID:ysAxvq3P] >>620 確認できました! ありがとうございます。
622 名前:nobodyさん mailto:sage [2008/04/10(木) 10:23:53 ID:???] Model->query()で以下のようなSQLを発行すると $sql = <<<EOF SELECT `Foo`.`id`, SUM(`Bar`.`hoge`) FROM `bars` AS `Bar` LEFT JOIN `foos` AS `Foo` ON (`Bar`.`foo_id` = `Foo`.`id`) WHERE `Foo`.`id` IN (1, 2, 3, 4, 5) GROUP BY `Foo`.`id` EOF; 連想配列の添字がおかしくなるのですが、回避はできないのでしょうか array( '0' => array( 'Foo' => array('id' => ***) '0' => array('SUM(`Bar`.`hoge`)' => ***) ←ここ ) . . . )
623 名前:nobodyさん mailto:sage [2008/04/10(木) 10:42:01 ID:???] >>622 なんかqueryなんか使わないで、find()で出来そうな気がするんだが? queryだとRDBMSごとの違いを吸収できないことがあるのでお勧めしない。 んで、試してないんで間違っている可能性が高いんだが $sql = <<<EOF SELECT `Foo`.`id`, SUM(`Bar`.`hoge`) as `Bar`.`hoge` 以下同じ じゃだめかな? 内部的には帰ってくるデータのフィールド名がどうなっているかを判断して 連想配列に入れているようだから、SUM関数とか使うとフィールド名が CakePHP的に想定外になる。それが原因じゃないかな? ちなみに、この、 as `Bar`.`hoge`の文字列の部分がRDBMSによって違うので 考えなしに使ってしまうと、RDBMSごとの違いを吸収できなくなる。 (たしかPostgreSQLだとas Model__Field) もちろん、MySQLにだけ対応していればいいのなら、問題ないけどね。
624 名前:nobodyさん mailto:sage [2008/04/10(木) 11:29:33 ID:???] >>623 レスありがとうございます alias噛ませる方法は私も試してみたのですが FROM `bars` AS `Bar`の宣言と被っているためエラーが返ってきます。 hasManyで繋がっている集計先テーブルの条件指定なども追加したい場合 CakePHPの作法だとどのようにするべきなのでしょうか?
625 名前:nobodyさん mailto:sage [2008/04/10(木) 11:53:32 ID:??? BE:39571564-2BP(2)] 参照の参照がうまくいかない。 たとえば、PostのViewにユーザ名だけでなく、そのユーザが所属するグループ名を表示したい場合、どうすればいいんだろう? Post.id Post.user_id−参照→User.id ←取得−User.username User.group_id−参照→Group.id ←取得−−−−−−−−−−− Group.groupname User.usernameを表示する場合は、$post['User']['username']でいけるっぽいけど、 じゃあ、そのユーザのグループ名はどうやって取得すればいいんだろう? 他にも、グループ名のリンクをクリックしたときに、そのグループに所属するユーザ (User.group_idの値がGroup.idの値と等しいユーザ)User.usernameの一覧を作成するときとか どのように書けば良いんだろうか? MVCにしろ、SQLにしろ始めたばっかで全然わからないや。
626 名前:nobodyさん mailto:sage [2008/04/10(木) 15:04:31 ID:???] >>625 Post -> User -> Group という順番に適切なアソシエーションが設定されていれば、芋づる式にデータは取ってこれる。 やってるけど分からないなら>>620 が書いているように、デバッグモードをonにしたほうがいい。 その質問の仕方だと、何をどこまでやって分からないのか分からない。
627 名前:nobodyさん mailto:sage [2008/04/10(木) 22:22:07 ID:???] >>624 とりあえず、 SUM(`Bar`.`hoge`) as `sumhoge` これだと、 Array([0] => Array([0] => Array([sumhoge] => 6))) となるよ。 まとめて書くなら、 $query = array( 'conditions'=>array( 'Foo.id'=>array(1,2,3,4,5), '1=1 GROUP BY Foo.id' ), 'fields'=>array('Foo.id','SUM(Bar.hoge) as sumhoge') ) $this->Bar->find('all',$query); って感じかな
628 名前:nobodyさん mailto:sage [2008/04/10(木) 22:25:44 ID:???] まあ、SUMつかったせいで、 どこのモデルのデータかという情報が消えてしまい、 0という名前のモデル名になるってだけで おかしいわけじゃないんだけどな。 今回はBar.hogeのSUMだからモデル名はBarになるべきだと 思うかもしれないけど、SUM(`Foo`.`hoge` + `Bar`.`hoge`) という 書き方だって出来るわけだし。
629 名前:nobodyさん mailto:sage [2008/04/11(金) 00:29:36 ID:???] なるほどなんで0になるんだとか悩んでた しかし、扱いにくいのはたしかなんだよね
630 名前:nobodyさん mailto:sage [2008/04/11(金) 01:18:44 ID:???] BakeとかBakeryとかCheeseCakeなんていう、楽しげな製菓製パン用語の中にあって、 Scaffoldなんていう土建屋みたいなネーミングはいかがなものかねぇ。 いくらRoRのパクリとはいえ、違う名前でもよかったんじゃないかな。 なぁんて、チラシの裏w。
631 名前:nobodyさん mailto:sage [2008/04/11(金) 01:32:12 ID:???] じゃあスポンジケーキ?
632 名前:nobodyさん mailto:sage [2008/04/11(金) 01:40:16 ID:???] >>625 私も初心者ですが、私の場合はVIEWの最後に、 <?php print_r($post); ?> というデバッグ出力を出して確認しながらやってます。 あ、確認は「ソースの表示」をした方が分かり易いかも。 秀丸など、UTF8等のキャラクタセットに対応するエディタが必要ですが。
633 名前:nobodyさん mailto:sage [2008/04/11(金) 02:27:45 ID:???] Vista以降はもう NET Framework 3.0がWEBサイト最強のフレームワークになるな PCのWEBサイトはC#じゃないと追いつけないわ そしてPHPなどの下級言語は携帯サイトでしか使用されなくなる
634 名前:nobodyさん mailto:sage [2008/04/11(金) 02:39:04 ID:???] Windows Server 2008の発売で asp.netの注目度がかなり上がってる どう考えてもPHPから3Dにも強いasp.net(C#)に移行するだろうな
635 名前:nobodyさん mailto:sage [2008/04/11(金) 02:40:09 ID:???] CakePHPなんてやってる場合じゃないぞ 時代遅れ君たち
636 名前:nobodyさん mailto:sage [2008/04/11(金) 04:43:59 ID:???] なんだ? いきなりこいつは? 話ズレまくりで滑ってるな。
637 名前:nobodyさん [2008/04/11(金) 04:57:27 ID:OBoZ/5C8] >>635 代わりに、なにがいま時代の最先端なの?
638 名前:nobodyさん mailto:sage [2008/04/11(金) 13:47:57 ID:???] 世間で何が流行ろうと、CakePHPはCakePHPでいいじゃん。 別に、すでにCakePHPで作ったものをC#に置き換える必要は ないんだし。
639 名前:nobodyさん mailto:sage [2008/04/11(金) 15:17:40 ID:???] C#で作ったって動かないサーバーが多いしな。
640 名前:nobodyさん mailto:sage [2008/04/11(金) 17:09:12 ID:???] 先輩がた教えて下さい。 mysql の max 関数を使うには cakephp ではどのようにすればよいでしょうか。 よろしくお願いします。
641 名前:nobodyさん mailto:sage [2008/04/11(金) 22:44:28 ID:???] $this->モデル名->クエリ(SQL文、false);
642 名前:nobodyさん mailto:sage [2008/04/11(金) 23:41:35 ID:???] queryは普通使わないだろw findといえ
643 名前:nobodyさん mailto:sage [2008/04/12(土) 13:37:27 ID:???] >>642 自分も、するんだったらクエリ発行するしかないと思ってたんだけど、 使った事がないので書かなかった。 findでmax関数ってできるの?
644 名前:nobodyさん mailto:sage [2008/04/12(土) 14:39:58 ID:???] >>632 <?php echo pr($post) ?> がおすすめ
645 名前:nobodyさん mailto:sage [2008/04/12(土) 15:57:22 ID:???] >>643 $this->Model->find('all',array('fields'=>array('MAX(id)'))); >>644 <?php pr($post) ?>でいいよ
646 名前:nobodyさん mailto:sage [2008/04/12(土) 16:42:32 ID:???] cakeって、queryを使ったら死刑!くらいの気持ちが無いと駄目なの?
647 名前:nobodyさん mailto:sage [2008/04/12(土) 19:44:31 ID:???] だってqueryってSQL直で発行だよ? せっかく、CakePHPのデータベース用ドライバが、 RDBMS間の差を吸収しているのに フレームワーク使っている意味半減するじゃん。
648 名前:nobodyさん mailto:sage [2008/04/12(土) 21:28:23 ID:???] >>635 ある意味正解!だがまだ時代が追いついてきていない。 やっぱO/Rマッピングでは無理があるということだ C#も3.0の言語仕様拡張で突き抜けた感があるしね LINQとかラムダ式とかJavaの真似っこでない次元に到達した。 でも現状は糞言語PHPで本当に馬鹿みたいなコーディングするしかないけどな。
649 名前:nobodyさん mailto:sage [2008/04/12(土) 21:50:24 ID:???] >>648 中身がまったくない。知っている用語を羅列しただけ 自作自演の可能盛大。0点。出直しましょう。
650 名前:nobodyさん mailto:sage [2008/04/12(土) 21:53:16 ID:???] >>647 >> RDBMS間の差を吸収しているのに 一つのシステムに複数のRDBMSを跨ぐ様な事なんて殆どないけどな。 まぁ、極力queryを使わないほうがいいのは同意。
651 名前:nobodyさん mailto:sage [2008/04/12(土) 21:55:24 ID:???] 同じコードで、いろんなデータベースに 対応できるってことを言っているんだろ。馬鹿か。
652 名前:nobodyさん mailto:sage [2008/04/12(土) 22:14:35 ID:???] 素直にRailsつかったらいいのに
653 名前:nobodyさん mailto:sage [2008/04/12(土) 22:22:03 ID:???] railsかぁ。二年ぐらい前なら、それだけの価値はあったかもしれないが。
654 名前:nobodyさん mailto:sage [2008/04/12(土) 23:15:20 ID:???] DBにべったりガッツリ依存しまくってるフレームワークってないのかな 割り切った設計で可能な限り使いやすさと速度の両立を目指すという
655 名前:nobodyさん mailto:sage [2008/04/12(土) 23:24:15 ID:???] そのRailsだって難しい事はSQL直発行しろってスタンスだろ Zendに至ってはプレースホルダのSQL直発行がメイン findごときで収まるクエリだけなら世話ねーの
656 名前:nobodyさん mailto:sage [2008/04/13(日) 00:28:23 ID:???] だからむずかしいことだけSQL発行すればいいんだよ。 Zendの場合、O/Rマッパーそのものがない。 あれはフレームワークというよりライブラリだから。
657 名前:nobodyさん mailto:sage [2008/04/13(日) 11:48:16 ID:???] なんかCakePHP以前の事をお聞きするのですが・・・。 前々スレ744を参考に、$html->formTagでformタグを実装しようとしています。 ただ、検索文字列(this.search.valueの部分)に全角文字が入るため、エンコード(?)する必要が あると思うのですが、その方法が分かりません。 やり方、もしくは、この単語でググればよい、というのを教えて下さい。 744 :nobodyさん:2007/09/15(土) 12:14:57 ID:??? > >>740 > こうですか?わかりません>< > > $html->formTag('/post','get',array('onsubmit'=>'location.href=\'/post/\'+this.search.value;return false;'));
658 名前:nobodyさん mailto:sage [2008/04/13(日) 13:07:44 ID:???] <form action="/コントロール名/アクション名/" method="POST"> <input type="submit" value="検索"> 入力欄は$html->inputなどを使う事
659 名前:658 mailto:sage [2008/04/13(日) 13:18:37 ID:???] action="<?= $html->url('/コントローラ名/コントローラメソッド名')" だった。すいません
660 名前:657 mailto:sage [2008/04/13(日) 14:18:45 ID:???] >>659 ありがとうございます。 ただ、method=getなので、やりたかった事とはちょっと違うようで・・・。 いろいろ試したのですが、けっきょく、VIEW側は <?php echo $html->formTag('/post/', 'get'); ?> <input type="text" name="search" size="15"> <?php echo $html->submit('検索'); ?> として、コントローラー側で function search() { $keyword = $this->params['url']['search']; (以下略) として対処する事にしました。
661 名前:nobodyさん mailto:sage [2008/04/13(日) 19:11:09 ID:???] >>651 同じコードで、いろんなデータベースに対応できるから極力queryを使わないほうがいいって言ってんだろ。馬鹿か。
662 名前:nobodyさん mailto:sage [2008/04/14(月) 02:08:03 ID:???] CakePHP1.2を昨日から使い始めました。 それで、$formがまだよくわかっていないのですが、$form->radioで 1つ目にcheckedをつける場合、どのように指定すればいいのでしょうか? <?php echo $form->radio('Bookmark.access', array(1=>'公開','非公開'), array('legend'=>false, 'separator'=>' ')); ?>
663 名前:nobodyさん mailto:sage [2008/04/14(月) 11:45:13 ID:???] >>662 inputだとこんな感じ <?php echo $form->input('Bookmark.access', array( 'options'=>array('1'=>'public','2'=>'private','3'=>'text'), 'type'=>'radio', 'legend'=>false, 'separator'=>' ', 'value'=>'3')); ?> たぶん、radioでもvalueをつけるといけると思う。
664 名前:nobodyさん mailto:sage [2008/04/14(月) 17:25:15 ID:???] radioでvalueつけると、二つ目にチェック入れて 入力エラーで戻ってきたときに、 また一つ目がチェックされるのよね。
665 名前:nobodyさん [2008/04/15(火) 00:36:29 ID:kB0aZEdA] Cake1.2でのAuthComponentの使い方などで、なにか良いチュートリアルがあれば教えていただけませんかー? もし可能であれば、ACLのうまい活用の仕方もわかると嬉しいです ペコリ
666 名前:662 mailto:sage [2008/04/15(火) 01:18:18 ID:???] >>663 inputの例を参考に、2つ目のarrayに'value'=>'1'を追加して、うまく行きました。 ありがとうございます。
667 名前:nobodyさん mailto:sage [2008/04/16(水) 13:10:23 ID:???] Ver1.2でshellsの中でコンポーネント使うにはどすればいいの?
668 名前:nobodyさん mailto:sage [2008/04/16(水) 16:28:26 ID:???] App::importでなんでもござれだが、 そもそもshellsの中でコンポーネントを使うのが問題ではないのか? コンポーネント = コントローラの汎用的処理、 つまり処理の内容はコントローラそのものなわけで、 シェルの中からコントローラを呼び出すというのがちょっと疑問な処理。 コントローラの処理にリダイレクトするという考えでrequestActionを 呼び出すという考えもありとは思うが、 そもそもそれはモデルにおくべき処理なのかも知れないぞ。 ちなみにシェルからモデルを扱うには、usesプロパティを使用するだけでOKだ!
669 名前:nobodyさん [2008/04/17(木) 18:54:40 ID:YR2rN8Sk] ところでみんなはShellsはどんな使い方してるの? 俺の場合は、定期的にcronで叩いて、指定ディレクトリに生成された大量の一次データをDBに取り込む作業、とか。
670 名前:nobodyさん mailto:sage [2008/04/17(木) 19:48:58 ID:???] 今日はじめてcakeつかったけどさ、mysqlのセキュリティを下げないとつかえないじゃん オワタ
671 名前:nobodyさん mailto:sage [2008/04/17(木) 21:32:22 ID:???] 釣りに嘲笑レスだが、セキュリティを下げるって何したの?w
672 名前:nobodyさん mailto:sage [2008/04/17(木) 21:35:44 ID:???] >>669 旧システム(フレームワーク未使用)から新システム(CakePHP)への データコンバートに使った。 あとは簡易なツールかな。たとえば入力した単語の単数形⇔複数形 などをするツール。
673 名前:nobodyさん mailto:sage [2008/04/17(木) 21:42:54 ID:???] >>671 これが釣りに見えるとは・・ おまえの知識がよくわかるわ #sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
674 名前:nobodyさん mailto:sage [2008/04/17(木) 22:03:43 ID:???] 知識うんぬん以前に、お前何も言ってないじゃん。 セキュリティを下げるというだけで、それ以外のまともな情報が何もない。 だから馬鹿にされるんだよ。 で、それのどこがセキュリティ下げてることになると思ってんの?w 互換性とセキュリティの違い、理解しようね。
675 名前:nobodyさん mailto:sage [2008/04/17(木) 22:25:09 ID:???] >>674 ( ゚д゚)ポカーン
676 名前:nobodyさん mailto:sage [2008/04/17(木) 23:10:06 ID:???] >>673 どういう意味? sql-modeをこれに設定したって事?
677 名前:nobodyさん mailto:sage [2008/04/18(金) 00:13:14 ID:???] >>676 に書いてあることがコメントされずに初期設定されている これをコメントアウトすることによってセキュリティを甘くせざるを得ないわけよ このモードをはずさないとcakeのコードからワーニングがでる。 cakeに潜んでるバグで作者は修正予定らしい
678 名前:nobodyさん mailto:sage [2008/04/18(金) 00:16:50 ID:???] >>676 横レスですまんが、すっげぇ要するにMySQL5系の設定で STRICT_TRANS_TABLESを指定していると、SQLの構文チェックを 厳密にするんだけど、このままだとCakePHPの吐くSQL自体でエラーが出るんよ。 んだから今の所は構文チェックを緩くしないとCakePHPが動作しないって事。 >>670 の説明で分かった奴はエスパー。
679 名前:676 mailto:sage [2008/04/18(金) 00:24:11 ID:???] >>678 の説明でようやく分かったw
680 名前:nobodyさん mailto:sage [2008/04/18(金) 00:33:10 ID:???] 名無しのままでいいからもっといじったほうがいいよ676さんは
681 名前:nobodyさん mailto:sage [2008/04/18(金) 00:34:11 ID:???] 1.挨拶を自分からしない・できない・やろうと思わない 2.リアルではおとなしいのにネット上では態度がでかい。 3.自分の意見で地球が動いてると思ってる。自分の意見はみんなの意見。 4.自分に非があってもスグ言い訳、逆切れ。他人を攻撃する。威嚇することで自分の弱さを隠している。
682 名前:nobodyさん mailto:sage [2008/04/18(金) 01:17:05 ID:???] >>678 つまり、セキュリティの問題じゃないってこと?
683 名前:nobodyさん mailto:sage [2008/04/18(金) 01:18:01 ID:???] >>682 つまり、日本語わかるか?
684 名前:nobodyさん mailto:sage [2008/04/18(金) 01:18:11 ID:???] っていうか、MySQLの仕様変更だし。 CakePHPのバグでもセキュリティの問題でもない。
685 名前:nobodyさん [2008/04/18(金) 01:27:47 ID:UgH30Z6m] アホが大量発生しとりますな。 CakePHPとはスレ違いだし
686 名前:nobodyさん mailto:sage [2008/04/18(金) 01:28:35 ID:???] まあ、>>670 がアフォってことでいいじゃんかw
687 名前:nobodyさん mailto:sage [2008/04/18(金) 01:46:12 ID:???] >>673 のsql-modeの値がデフォルトになっているのは、 Windows板でインストーラーを使ってインストールした場合のみ。 本当のデフォルトの値は厳密モードじゃありません。 いい加減Windowsは卒業しろよw
688 名前:nobodyさん mailto:sage [2008/04/18(金) 02:46:06 ID:???] >>682 んーと、SQLインジェクションとか攻撃者が故意に行うものとは違うんだけど、 まぁ広義の意味でセキュリティの問題だとは思うよ。 つーのも、MySQL4系ってあれなのよ、予め決めたカラムの型よりデカいデータ食わせると 勝手に型に合わせてデータ削って無理やり挿入してくれちゃうのよ。 例えばvarchar(4)でカラム作ってそこに"unkotintin"ってデータ突っ込んでも、うんこしか保存されないわけ。 他にも''をNULLと解釈してくれたり、2008-02-31を許容してくれたりと 入力データに対して大変大らかな実装なんよね。 で、それってちょっとマズいだろ、入力データが型に合ってない=異常事態なんだから 強制保存すんな!ロールバックしろヴォケ!と思う人も当然いる訳で そんな感じの背景があってMySQL5系から型チェックを厳しくするモードが実装されたと。 CakePHPの場合だと、INSERTする時にidの数字をauto_incrementに任せる訳だけど、 そこで発行されるSQLがid = ''って指定されてるから「そこ文字列入れる所じゃねーよ!」って怒られる。 んだからセキュリティホールよろしく第三者に直接叩かれるって心配はないよ。 余談だけど、STRICT_TRANS_TABLESはInnoDBとかトランザクションをサポートしてねーと使えねーべ。 MyISAMで構文チェックさせる時はSTRICT_ALL_TABLESなー。
689 名前:nobodyさん mailto:sage [2008/04/18(金) 04:25:34 ID:???] それってセキュリティとは言わないと思う
690 名前:nobodyさん mailto:sage [2008/04/18(金) 04:45:08 ID:???] .thtml 派? .ctp派? 今でもぼくは .thtml 派。
691 名前:nobodyさん mailto:sage [2008/04/18(金) 08:30:04 ID:???] >>690 1.1系から乗り換えた当初は.thtmlにこだわってたけど(てか気づかなかった…) .ctpに切り替えたら1日で慣れた やっぱり5文字の拡張子は長すぎるよね
692 名前:nobodyさん mailto:sage [2008/04/18(金) 08:37:15 ID:???] >>689 だから広義の意味っつってんじゃん。日本語理解できてる? Perlでコードの安全性を高めるためにuse strict;するのと一緒だよ
693 名前:nobodyさん mailto:sage [2008/04/18(金) 09:07:33 ID:???] >>691 レスまんくす! では、僕も次のサイト作りから ctp 派 になります♪
694 名前:nobodyさん mailto:sage [2008/04/18(金) 09:12:53 ID:???] >>692 広義の意味でもセキュリティの問題じゃない。 俺俺定義すんなw
695 名前:nobodyさん mailto:sage [2008/04/18(金) 09:15:03 ID:???] >>692 広義といえばどんな主張でも通ると思ってる厨房発見。
696 名前:nobodyさん mailto:sage [2008/04/18(金) 15:39:38 ID:???] メールフォームとかで //入力画面 function form(){ } //確認画面 function confirm(){ //バリデーションでエラーの場合、フォームに戻す if(!$this->Form->validates($this->data)){ $this->set('data',$this->data); $this->render('form'); } } //完了画面 function send(){ } form.thtml <?php echo $html->input('Form/name',array('value' => $data['Form']['name'])); ?> の構成の場合、最初に form にアクセスすると $data['Form']['name'] がない! とNoticeエラーが出てしまいます。 これって、 form() で初期化した $data を与えるしかないのでしょうか? 入力項目がいっぱいあるとめちゃくちゃ大変な気がするのですが…。
697 名前:nobodyさん mailto:sage [2008/04/18(金) 16:19:29 ID:???] findByなどで、hasManyでくっついてきたレコード数をカウントしたい場合、 どのようにすればよいのでしょうか?
698 名前:nobodyさん mailto:sage [2008/04/18(金) 18:21:08 ID:???] 1.1系でmode内でorderとかconditionを設定できないの? class Post extends AppModel { protected $order = "Post.created DESC"; とかでfindしても駄目なんです。
699 名前:698 mailto:sage [2008/04/18(金) 18:21:29 ID:???] すいませんmodel内でです
700 名前:698 mailto:sage [2008/04/18(金) 19:03:12 ID:???] もう少し分かりやすく言うと、モデル内でSQLの検索条件(where句)に縛りを入れたいです。
701 名前:nobodyさん mailto:sage [2008/04/18(金) 19:27:37 ID:???] うっ・・・だめ。もう・・もう・・・もうでる。 モデル
702 名前:nobodyさん mailto:sage [2008/04/18(金) 19:50:15 ID:???] モデル内に function find_name_only($cond = "name like '%tarou%'"){ return $this->findAll($cond); } を書いてごまかしてみました。 ほかにいい方法があるのでしょうか?
703 名前:nobodyさん mailto:sage [2008/04/18(金) 20:00:26 ID:???] >>696 まだ始めて2週間しかたってないけど。 form.thtml <?php echo $html->input('Form/name'); ?> で、どう? あと、$this->set('data',$this->data); は、要らないとおも
704 名前:nobodyさん mailto:sage [2008/04/18(金) 20:05:29 ID:???] >>697 count( $model['Model']['HasManyModel'] ) かな?
705 名前:697 mailto:sage [2008/04/18(金) 21:22:22 ID:???] >>704 これは取り出した後で、PHPのcount関数で配列の要素数をカウント、ということでしょうか? そうではなくて、 たとえばfindAllするときに取得順などにHasManyModelのカウント数を使いたいのですが。 質問の文章がわかりづらくて申し訳ありません; よろしくお願いします。
706 名前:nobodyさん mailto:sage [2008/04/18(金) 21:42:58 ID:???] >>705 おそらく、自分でクエリを書かないといけないでしょうね。
707 名前:697 mailto:sage [2008/04/18(金) 21:47:07 ID:???] >>705 やはりそうですか; せっかくフレームワークを使っているのでできればクエリは書きたくないですね・・・ UsersをPostsの多い順に並べ替える、など、結構よく登場すると思うのですが;
708 名前:nobodyさん mailto:sage [2008/04/19(土) 01:00:18 ID:???] > UsersをPostsの多い順に並べ替える、 やってないけど、これは、findAllの条件にexistsなんたらって書いて countだせばいいとだろうから、一応findAllは使えるな。 半分ぐらいしか意味ないけど。
709 名前:nobodyさん mailto:sage [2008/04/19(土) 01:16:45 ID:???] >>707 それか、1回データを取り出した後で件数をキーにした連想配列に入れかえるのはどうでしょうか。 配列の添え字を、 $array[$count .' - ' .$id] こんな感じにして配列をソートしたら出来そうですが。
710 名前:nobodyさん mailto:sage [2008/04/19(土) 10:26:43 ID:???] >>707 > UsersをPostsの多い順に並べ替える、など、結構よく登場すると思うのですが; ちょうど同じような事例を考えていた。 顧客とその顧客の取引データが一対多でつながっている場合に 取引が多い顧客を見たいと。 で、いろいろ考えたんだが、顧客数や取引が多くなると重くなりそうなので、 (だって内部的には顧客ごとにデータ数えて、その数でソートするんだろう!?) 非正規化することになるが、顧客データの中に取引数フィールドを作ることにした。 あとは取引データ保存時、つまりモデルのafterSave時に、 顧客テーブルの取引数フィールドをいじればいいと。 フレームワークを使っているとこういうトリガー的なことを データベースに依存せずにやれるから良いね。
711 名前:697 mailto:sage [2008/04/19(土) 11:37:16 ID:???] >>ちょうど同じような事例を考えていた。 奇遇です! なるほど・・・あえて非正規化する、と。 手元にある参考書に 「処理効率を考えて、あえて非正規化することもある」 と書いてあった意味がわかりました。 たしかに、毎回自分でクエリ書くのに比べたら、 冗長なデータを持っておくくらい、なんてことないですね! 目からウロコでした!
712 名前:nobodyさん mailto:sage [2008/04/19(土) 11:39:14 ID:???] DB使ってる意味ねぇw
713 名前:697 mailto:sage [2008/04/19(土) 11:50:08 ID:???] >>712 では、他に何かいいアイデアがあるのですか?
714 名前:nobodyさん mailto:sage [2008/04/19(土) 12:22:29 ID:???] 俺は自分でクエリを書いたほうが断然面白い。
715 名前:nobodyさん mailto:sage [2008/04/19(土) 12:31:41 ID:???] 1.2を入れてみたのですが、 function index() { $data = "テスト"; $this->set('data', $data); } とやっただけで Allowed memory size of xxx bytes exhausted ... が出てしまいます; CakePHP叩きではなく、本当に困っています。 対処法を教えてください。
716 名前:nobodyさん mailto:sage [2008/04/19(土) 12:38:01 ID:???] >>715 その程度のコードで、そのエラーが出るときは、 基本的にバグだと思ったほうが良い。 まあ環境のせいもあるからとりあえず聞くけど、 OSとPHPのバージョンと、php.iniの設定(もしくはini_get('memory_limit'))の値) function index() { echo 'aaa';exit; } とやるとどうなるか。 index()以外のコードはどうなっているか。
717 名前:nobodyさん mailto:sage [2008/04/19(土) 12:42:21 ID:???] >>712 > DB使ってる意味ねぇw DB使うことが目的じゃないからね。 DBは所詮データの保存先に過ぎないし。
718 名前:715 mailto:sage [2008/04/19(土) 12:47:34 ID:???] >>716 レスありがとうございます。 どうやらbakeで生成したビューをそのまま使っていたことが原因だったようです; スレを汚してしまってすみません;;
719 名前:nobodyさん mailto:sage [2008/04/19(土) 13:08:09 ID:???] >>717 じゃファイルベースでやりゃいいじゃん。やらない理由は?
720 名前:nobodyさん mailto:sage [2008/04/19(土) 14:35:19 ID:???] CakePHP でPEARを使うとき 依存PEARがうまく発見できないのですが、 どうすればよいのでしょうか? php.iniのinclude_pathには app/vendorsを追加してあります。
721 名前:nobodyさん mailto:sage [2008/04/19(土) 17:44:54 ID:???] >>719 > じゃファイルベースでやりゃいいじゃん。やらない理由は? フレームワークがファイルベースに対応していないから。 (読み書きできないということではなく、モデルが対応していないということ)