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

    元スレ【PHP】フレームワーク CakePHP 12ホール目【笑】

    php覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    802 = :

    何でディレクトリ名キャメルケースになっちゃったの?
    何か理由があるのかね?

    803 = :

    キャメルって頭文字が大文字のことをいうの?

    804 = :

    モデルのアソシエーション先の afterFind について質問なんですが、
    処理した内容を return で返してもデータが反映されず困ってます。
    試しに return を null にしてもちゃんとデータを引っ張ってきてしまいます。
    afterFind メソッドは叩かれてるようなんですが、戻り値を使っていないという感じです。
    ちなみに直接 Find するとちゃんと戻り値が反映されます。
    解決方法はありますでしょうか?

    805 = :

    どういうafterFind書いてるかソース出してみ

    806 = :

    >>805
    ソースというか、それ以前なんです・・・。
    上の質問で試したソースです。
    よろしくお願いします。

    class Post extends AppModel {
      var $hasMany = array(
          'Postmeta' => array(
            'className' => 'Postmeta',
            'foreignKey' => 'post_id'
        )
      );
    }

    class Postmeta extends AppModel {
      function afterFind($results, $primary) {
      return null;
      }
    }

    これで Post->find('all') すると return null してるから Postmeta は空、と思ってるんですが反映されません。

    809 = :

    >>803
    まちがってるね。
    最初が大文字はPascal(パスカル) 形式
    最初が小文字がCamel(キャメル) 形式

    811 = :

    CakePHPって何がいいの

    812 = :

    >>811
    小規模の開発なら手軽だよ。
    他にいいPHPフレームワークあるかい?

    813 = :

    SNS作ってるんだけど、どうしても規模が大きくなるから
    ディレクトリ構造が複雑になって辛い・・・

    814 = :

    Paginator使ってるページで、URLに「limit:1000」とかパラメータを埋め込まれると
    controllerで設定したlimitを上書きしちゃうんだけど、URLからのパラメータ指定を
    無効にするにはどうしたらいいの?

    815 = :

    >>812
    小規模ってどれくらいまでが小規模ですか
    ECサイトくらいだと小規模かな

    816 = :

    >>814
    たしか2.0から無効になるパラメータがあったはず。
    1.3以前なら無理だと思う。素直に自分で上限付けるべき。

    817 = :

    >>816
    ありがとう。2.0の変更内容を見ていてはじめて、URLパラメータでlimitが任意で指定できることを知った。
    limitに1000000とか指定されても迷惑なので、paginateのwhitelistにきちんと値を設定することにするよ。

    819 = :

    データベース結果からJSON返すの楽だし止める理由は無いです

    820 = :

    >>817
    それ、設計がおかしくないか?
    セレクトメニューから件数選ぶのが定石だと思うが。

    822 = :

    >>820
    言葉が足りなかった。件数の設定をやめさせる、というわけではないよ。

    コントローラでlimitをパラメータから取得して、paginateのオプションに
    明示的に設定してから、paginateを実行する。

    824 = :

    >>818
    実際やってるけど楽です
    管理画面も同時に作ってます

    825 = :

    >>821
    使ってます
    recursiveとjoinsと組み合わせて

    826 = :

    Containable使わないとか有り得ない程度には思ってる

    828 = :

    俺はもうjoinsを中心に使ってる。
    色々付けたり外したりしてると、わけわからんようになってくるしw

    830 = :

    ボクもContainableしりたい

    832 = :

    >>831
    関連付けってアソシエイションのことだよね?
    関連付けたモデルを取得しないってのは
    recursiveでやるじゃなかったっけ?

    833 = :

    paginate使ってる人、
    groupオプション(GROUP BY)付けてページネートしてみて
    ページが1ページしかないように返してくるから
    これってバグだよね?

    ググってみると、
    http://d.hatena.ne.jp/aroundthedistance/20090728/1248784179
    こんな記事もあるんだけど、
    2009年の記事なのに未だに(1.3使用)直ってないってこと?

    834 = :

    モデルの関連づけがいまいちわからないのですけどいいサイトあったらおしえてください

    835 = :

    結局cookbook以外は断片的な情報集めるしかない気がする

    836 = :

    実開発でもそうだった。
    検索して、ヒットしたブログ記事を参考に実装してた。

    837 = :

    >>832
    recursiveでもできるよ。
    だけど、containableを使うともっと細かく制御できる。
    例えば、
    usersテーブルに
    hasOneでprofilesテーブルと
    postsテーブルが
    関連付けされててusersとprofilesだけ欲しい場合

    $this->Users->find('all', array('contain' => 'Profile'));で取れる。

    838 = :

    さらに、ProfileにState(都道府県)を関連づけしてる場合

    $this->Users->find('all', array(
      'contain' => array(
        'Profile' => array('State')
      )
    ));
    で取れる。

    839 = :

    >>833
    誰かこれどう?1.3以上の人試してくれない?
    コントローラの設定で、
    var $paginate = array(
      'Model' => array(
        'group' => 'Model.id',
        'order' => 'Model.id DESC',
        'limit' => 5,
      )
    );
    としてみるだけでいい
    ページネーションのページ数が1になる
    (ページ数(pageCount)が入っている配列はView内で $paginator->params() で取得可能)

    840 = :

    >>839
    ・paginateメソッドがgroupに対応するとより複雑なグルーピングなどに対応できないなどの
    拘束が生まれるので仕様
    ・バグじゃないから直らない
    ・記事の通りコールバック書け

    842 = :

    >>840
    まだ直ってないのか・・・
    バグというより非対応って考えなきゃいけないのか

    843 = :

    >>837-838
    これはわかりやすい!直感的にイメージできた。GJ!

    844 = :

    CakePHPで画像のサムネイルをリアルタイム(アクセス毎)で生成してるんだけど、
    40画像ぐらい表示させると、表示しない画像がちらほら出てくる・・・

    実装としては、大きな画像をサーバ上に置いて、
    ・<img src="<?php echo $html->url('/thumbnails/view/1234'); " />
     のようにimgタグでコントローラにリクエスト
    ・渡されたIDをもとに画像のパスが保存されてるテーブルをfind()
    ・その画像からサムネイルを生成して返す
    という感じ。

    1人がアクセスするたびに、40個画像があれば、
    CakePHPが40個起動するのはやっぱりこの実装は問題ありなのかな?
    同時接続数にひっかかってる気もする

    ちなみに ZOZOTOWN(http://zozo.jp)はCakePHPではないと思うけど、
    上記のような感じでアクセスされて生成している模様

    845 = :

    ZOZOTOWNみたいなアクセスの多いサイトがアクセスの度にサムネイルを生成してるわけがない。
    実装に問題あり。

    846 = :

    サムネイルは本画像保存時に同時に作成するのが普通では?

    847 = :

    さすがに40個を毎回作成してたら不具合出るわw

    848 = :

    >>846だな
    サムネイルキャッシュは公開ディレクトリに置くか、tmpディレクトリに生成して生PHPで読みに行かせるのがいいと思う

    850 = :

    みなさんありがとうございます。

    >>845
    してると思います
    ただ、生成したあとキャッシュしてるかもしれませんが、、、
    ?w=70&h=84
    例えばこの画像だけど、
    wやhの値を変えると、その大きさになります
    ?w=111
    こんな感じで適当な値を全て保存してるはずないので
    アクセスしたときに生成してるんだと思います

    >>846
    はい、最初はそう考えましたが、
    様々な大きさにフレキシブルに対応したいと思って、
    >>844のような実装にしたくなったのです

    一度生成した画像はそのまま保存して、
    その大きさの画像があれば、その保存したものを取りに行くという実装にしようかな?
    ZOZOTOWNのような人気サイトはどう対応してるのか・・・


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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