のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,895人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ【PHP】フレームワーク CakePHP 3ホール目【本命】

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    701 : nobodyさん - 2008/04/18(金) 19:27:37 ID:??? (+27,+29,-6)
    うっ・・・だめ。もう・・もう・・・もうでる。 モデル
    702 : nobodyさん - 2008/04/18(金) 19:50:15 ID:??? (-7,-30,-51)
    モデル内に

    function find_name_only($cond = "name like '%tarou%'"){
    return $this->findAll($cond);
    }
    を書いてごまかしてみました。
    ほかにいい方法があるのでしょうか?
    705 : 697 - 2008/04/18(金) 21:22:22 ID:??? (-27,-29,-49)
    >>704
    これは取り出した後で、PHPのcount関数で配列の要素数をカウント、ということでしょうか?

    そうではなくて、
    たとえばfindAllするときに取得順などにHasManyModelのカウント数を使いたいのですが。
    質問の文章がわかりづらくて申し訳ありません;
    よろしくお願いします。
    706 : nobodyさん - 2008/04/18(金) 21:42:58 ID:??? (+24,+29,-13)
    >>705

    おそらく、自分でクエリを書かないといけないでしょうね。
    707 : 697 - 2008/04/18(金) 21:47:07 ID:??? (-12,-10,-49)
    >>705
    やはりそうですか;
    せっかくフレームワークを使っているのでできればクエリは書きたくないですね・・・

    UsersをPostsの多い順に並べ替える、など、結構よく登場すると思うのですが;
    708 : nobodyさん - 2008/04/19(土) 01:00:18 ID:??? (-26,-29,-66)
    > UsersをPostsの多い順に並べ替える、

    やってないけど、これは、findAllの条件にexistsなんたらって書いて
    countだせばいいとだろうから、一応findAllは使えるな。
    半分ぐらいしか意味ないけど。
    709 : nobodyさん - 2008/04/19(土) 01:16:45 ID:??? (-29,-30,-52)
    >>707

    それか、1回データを取り出した後で件数をキーにした連想配列に入れかえるのはどうでしょうか。
    配列の添え字を、

    $array[$count .' - ' .$id]

    こんな感じにして配列をソートしたら出来そうですが。
    710 : nobodyさん - 2008/04/19(土) 10:26:43 ID:??? (+31,+29,-185)
    >>707
    > UsersをPostsの多い順に並べ替える、など、結構よく登場すると思うのですが;

    ちょうど同じような事例を考えていた。

    顧客とその顧客の取引データが一対多でつながっている場合に
    取引が多い顧客を見たいと。

    で、いろいろ考えたんだが、顧客数や取引が多くなると重くなりそうなので、
    (だって内部的には顧客ごとにデータ数えて、その数でソートするんだろう!?)
    非正規化することになるが、顧客データの中に取引数フィールドを作ることにした。

    あとは取引データ保存時、つまりモデルのafterSave時に、
    顧客テーブルの取引数フィールドをいじればいいと。

    フレームワークを使っているとこういうトリガー的なことを
    データベースに依存せずにやれるから良いね。
    711 : 697 - 2008/04/19(土) 11:37:16 ID:??? (+36,+30,-71)
    >>ちょうど同じような事例を考えていた。

    奇遇です!

    なるほど・・・あえて非正規化する、と。
    手元にある参考書に
    「処理効率を考えて、あえて非正規化することもある」
    と書いてあった意味がわかりました。

    たしかに、毎回自分でクエリ書くのに比べたら、
    冗長なデータを持っておくくらい、なんてことないですね!
    目からウロコでした!
    712 : nobodyさん - 2008/04/19(土) 11:39:14 ID:??? (-13,-16,-2)
    DB使ってる意味ねぇw
    713 : 697 - 2008/04/19(土) 11:50:08 ID:??? (+25,+29,-31)
    >>712
    では、他に何かいいアイデアがあるのですか?
    714 : nobodyさん - 2008/04/19(土) 12:22:29 ID:??? (+27,+29,-16)
    俺は自分でクエリを書いたほうが断然面白い。
    715 : nobodyさん - 2008/04/19(土) 12:31:41 ID:??? (-19,-30,-79)
    1.2を入れてみたのですが、

    function index() {
    $data = "テスト";
    $this->set('data', $data);
    }

    とやっただけで

    Allowed memory size of xxx bytes exhausted ...

    が出てしまいます;

    CakePHP叩きではなく、本当に困っています。
    対処法を教えてください。
    717 : nobodyさん - 2008/04/19(土) 12:42:21 ID:??? (+31,+29,-16)
    >>712
    > DB使ってる意味ねぇw

    DB使うことが目的じゃないからね。
    DBは所詮データの保存先に過ぎないし。

    719 : nobodyさん - 2008/04/19(土) 13:08:09 ID:??? (+31,+29,-2)
    >>717
    じゃファイルベースでやりゃいいじゃん。やらない理由は?
    720 : nobodyさん - 2008/04/19(土) 14:35:19 ID:??? (-17,-30,-81)
    CakePHP でPEARを使うとき
    依存PEARがうまく発見できないのですが、
    どうすればよいのでしょうか?
    php.iniのinclude_pathには
    app/vendorsを追加してあります。
    721 : nobodyさん - 2008/04/19(土) 17:44:54 ID:??? (-8,-15,-40)
    >>719
    > じゃファイルベースでやりゃいいじゃん。やらない理由は?

    フレームワークがファイルベースに対応していないから。
    (読み書きできないということではなく、モデルが対応していないということ)
    722 : 720 - 2008/04/19(土) 18:05:22 ID:??? (-6,+0,+1)
    すんません;
    事故解決しました。
    723 : nobodyさん - 2008/04/19(土) 19:37:01 ID:??? (-21,-29,-72)
    >フレームワークがファイルベースに対応していないから。
    ユーザが自由に選択することもできないってこと?
    強制的にDB使用?
    CakePHP糞FWすぎるwwwww
    724 : nobodyさん - 2008/04/19(土) 20:20:16 ID:??? (+27,+29,-41)
    流れ読まずにすみません。

    CakePHPで作られてるサイトで有名なところを見てみたいのですが、
    教えていただけませんか?
    たしかNiftyのなんかがCakeだと聞きましたが・・・
    726 : nobodyさん - 2008/04/19(土) 23:46:04 ID:??? (-20,+29,-31)
    >>723

    君頭大丈夫かね?

    CakePHPは別にデータベースを使用する必要は無い。
    ただデータベースを使ったほうが効率がいいだけだ。
    それがファイルベースでやらない理由。

    どうやら君は素人なのだろう。
    727 : nobodyさん - 2008/04/20(日) 00:01:18 ID:??? (+33,+30,-116)
    >>711
    非正規化は、一般的な業務システムでもよくやるな。

    ただ、明らかに正規化をさぼってて、テーブルのカラム数が100個超えているのを
    「性能を考えて非正規化している」と言い張る人はカンベンしてほしい。
    あぁごめん。cakePHPの話から逸脱した。

    >>723
    どこか忘れたけど、コントローラあたりの設定で、DBを使わないようにもできたはず。
    だれか補足頼むw
    特殊な使い方でもしない限り、あんましメリットはなさそうだね。
    728 : nobodyさん - 2008/04/20(日) 00:32:54 ID:??? (-24,+29,-30)
    >>726
    相手を見下さないと精神を保てない糞FWユーザ涙目www
    729 : nobodyさん - 2008/04/20(日) 00:33:33 ID:??? (+22,+29,-7)
    図星だったのか? その反応は。
    730 : nobodyさん - 2008/04/20(日) 00:34:22 ID:??? (-29,-29,-43)
    モデルが貧弱なCodeIgnitorよりは
    CakePHPの方が実用的に見て優れているな。
    731 : nobodyさん - 2008/04/20(日) 00:46:44 ID:??? (+25,+29,-46)
    >>728
    フレームワークに問題が無い話をしているのに
    糞FWとか言っているようじゃ
    説得力皆無だゾ
    732 : nobodyさん - 2008/04/20(日) 01:31:23 ID:??? (+22,+23,-67)
    >>723
    だからDB使わない事もできるって。
    デフォルト設定がDB使用になってるだけで、全然強制じゃない。

    http://www.1x1.jp/blog/2007/08/cakephp_no_db.html

    ファイルベースの設定方法は、わざわざ書かなくてもいいよね?


    >730
    CodeIgnitorを使いたい人は使えばいいし、CakePHPを使いたい人は
    使えばいいし、それだけの事。
    CodeIgnitorは機能が少ない分、実装がシンプルで軽いのが特徴なんだから、
    機能的に足りていれば、そっちでもいいでしょ。
    733 : nobodyさん - 2008/04/20(日) 01:35:00 ID:??? (+16,+28,+0)
    ちいたん最強
    736 : 734 - 2008/04/21(月) 19:37:53 ID:??? (+27,+29,-33)
    よく考えたら、ロックされるほうが正しいのか。

    アクセスしたユーザーはロックされるが
    他の人(ようするにセッションファイルが違う人)は
    ロックされないようだ
    737 : nobodyさん - 2008/04/22(火) 13:08:38 ID:??? (-6,-30,-86)
    初歩的な質問で申し訳ありません。

    bakeで作ったコントローラをみると

    $this->Session->setFlash(__('hogehoge.', true));

    のようなコードがありますが

    この__() や後ろのtrueは何を意味しているのでしょうか?
    もしかするとcakePHPに限ったことではないかもしれませんが、
    よろしくお願いします。
    738 : nobodyさん - 2008/04/22(火) 15:52:58 ID:??? (-23,-30,-189)
    >>737
    多言語化機能。

    /app/locale/jpn/LC_MESSAGE とその周辺あたりに言語ファイル
    .po や .mo を置くと、hogehogeが翻訳される。

    多くはビューで使われるため、<?php __('hogehoge') ?> と簡便に書くことが出来るようになっている。
    この場合、言語ファイルがあると、hogehogeが翻訳されて”出力”される。
    第二引数にtrueを指定すると出力せずに戻り値として返すという意味。

    これと似たやり方は、CakePHPだけでなく、PHP以外でも良く使われ
    多くは _('hogehoge')という書き方をする。

    PHPではgettext関数の別名として_()関数が使用できる。
    http://jp.php.net/manual/ja/function.gettext.php

    CakePHPではこのやり方を独自に拡張しており、
    関数名がアンダーバー二つになっている。
    739 : nobodyさん - 2008/04/22(火) 15:54:09 ID:??? (-17,-30,-265)
    おまけ。翻訳手順。poeditを使った場合。

    1.ソースコードやビューの中の翻訳したい文字列を__('hogehoge')という書き方にする。
    2.cake i18n extractツールを使うと、ソースコードの中から__()の部分を抽出、.potファイルを生成してくれる。
    3.poeditなどのツールを使い、.potファイルを取り込み、.poを作る。
    4..poを編集して翻訳リストを作っていく。
    5.最後に.poを.moにコンパイルする。.moが最終的な翻訳ファイル。poeditの場合.poを保存したら.moも出来る。

    6.新たに単語が増えたときは、2の手順で再度.potファイルを生成する。
    7.poeditで今使っている.poに.potファイルを追加取り込みをする。ちゃんと差分だけが取り込まれる。削除された単語も.poファイルに残っている。
    8.再度翻訳して保存。.moを作る。


    ファイルの意味をまとめると、
    .pot・・・単語のリスト(今現在使用している単語を抽出するテキストファイル)
    .po・・・作業ファイル(過去に使用して、今は削除している単語の翻訳情報なども残っているテキストファイル)
    .mo・・・翻訳ファイル(作業ファイルに残っているいろいろな無駄が取り除かれたバイナリファイル)

    ※ 実はCakePHPは .mo が無くても .po を直接翻訳ファイルとして使える。
    740 : nobodyさん - 2008/04/22(火) 18:29:42 ID:??? (+21,+29,-3)
    >>737

    いい質問。俺も初めてしった。

    >>738,739

    素敵だわぁ
    741 : 737 - 2008/04/22(火) 18:43:22 ID:??? (+24,+29,-32)
    >>738-9

    丁寧なレスをありがとうございます。

    CakePHPにはまだまだ知らない機能があるんですね。
    いろいろ楽しみです。
    742 : 737 - 2008/04/22(火) 18:44:53 ID:??? (+27,+29,-14)
    アンカーの付け方間違えました・・・
    マウスオーバーしないようにお願いします;;
    743 : 739 - 2008/04/22(火) 18:56:32 ID:??? (-27,-30,-127)
    一つ言い忘れた。.pot .po .mo とかの .で始まるやつは
    ドットで始まるファイルではなく、拡張子という意味で書いた。

    デフォルトではdefault.poやdefault.mo になる。
    それぞれのファイルのdefaultの部分を変更することも可能。

    abc.mo の場合、その場合、__d('abc', 'hogehoge') という書き方で
    出来ると思うがやったこと無いので/cake/basics.phpでもよんどくれ。
    744 : 新参者 - 2008/04/23(水) 05:59:57 ID:??? (-17,-30,-104)
    ブラクラするんだけど、俺だけ?
    メニューを選んで、表示し終わる前にサイト内検索する。(Specialofferとか)
    http://www.islandcruises.com/

    OS: WinXP sp2
    Browser: IE7
    CPU: Core2 6300
    Memory: 2G
    Service: xampp

    CakePHP 1.2で開発中なので、こういうの見るとビビっちまう・・・
    748 : 702 - 2008/04/25(金) 12:38:51 ID:??? (+23,+29,+1)
    >>747
    ありがとう、まじでありがとう
    749 : nobodyさん - 2008/04/26(土) 13:26:12 ID:??? (-26,-29,-118)
    URLを読み込む以外に、CakePHP外部から
    CakePHPの関数とか呼ぶ方法内ですかね?

    具体的に言うと、もともとウェブサイトがCMSで構築されており、
    新たにCakePHPを使ったウェブシステムを追加したわけですが、
    そのCMSのページ上にCakePHPシステムの情報・・・会員ユーザー名などを
    表示させたいのです。
    750 : nobodyさん - 2008/04/26(土) 13:30:26 ID:??? (+27,+29,-5)
    好きなようにDB叩けばいいんじゃまいか?
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について