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

    私的良スレ書庫

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

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

    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
    801 : nobodyさん - 2011/10/26(水) 20:02:12.45 ID:??? (-1,-29,-22)
    $paginator->options

    ってコントローラーで指定できませんよね?
    802 : nobodyさん - 2011/10/27(木) 02:11:13.69 ID:??? (+57,+29,-8)
    何でディレクトリ名キャメルケースになっちゃったの?
    何か理由があるのかね?
    803 : nobodyさん - 2011/10/27(木) 03:45:34.56 ID:??? (+61,+29,-7)
    キャメルって頭文字が大文字のことをいうの?
    804 : nobodyさん - 2011/10/27(木) 10:46:16.71 ID:??? (+3,-29,-107)
    モデルのアソシエーション先の afterFind について質問なんですが、
    処理した内容を return で返してもデータが反映されず困ってます。
    試しに return を null にしてもちゃんとデータを引っ張ってきてしまいます。
    afterFind メソッドは叩かれてるようなんですが、戻り値を使っていないという感じです。
    ちなみに直接 Find するとちゃんと戻り値が反映されます。
    解決方法はありますでしょうか?
    805 : nobodyさん - 2011/10/27(木) 11:10:43.00 ID:??? (+10,-24,-14)
    どういうafterFind書いてるかソース出してみ
    806 : nobodyさん - 2011/10/27(木) 11:28:25.45 ID:??? (+4,-30,-131)
    >>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 は空、と思ってるんですが反映されません。
    807 : nobodyさん - 2011/10/27(木) 11:48:38.50 ID:??? (-2,-29,-4)
    hasManyだからじゃね?
    808 : nobodyさん - 2011/10/27(木) 12:04:17.04 ID:??? (-2,-29,-13)
    >>807
    やっぱり hasMany はだめなんですか?
    たしかに HABTM だとちゃんと意図した通りになるんです。
    それで hasMany でも同じだと思ってたんですが・・・。
    809 : nobodyさん - 2011/10/27(木) 13:30:57.05 ID:??? (+6,-29,-29)
    >>803
    まちがってるね。
    最初が大文字はPascal(パスカル) 形式
    最初が小文字がCamel(キャメル) 形式
    810 : nobodyさん - 2011/10/27(木) 14:05:35.88 ID:??? (-1,-29,-10)
    UpperCamelCase = Pascal
    lowerCamelCase
    811 : nobodyさん - 2011/10/27(木) 16:50:04.82 ID:??? (+41,-14,-10)
    CakePHPって何がいいの
    812 : nobodyさん - 2011/10/27(木) 19:15:09.12 ID:??? (+97,+29,-33)
    >>811
    小規模の開発なら手軽だよ。
    他にいいPHPフレームワークあるかい?
    813 : nobodyさん - 2011/10/27(木) 19:49:58.61 ID:??? (+57,+29,-9)
    SNS作ってるんだけど、どうしても規模が大きくなるから
    ディレクトリ構造が複雑になって辛い・・・
    814 : nobodyさん - 2011/10/27(木) 20:30:53.17 ID:??? (+36,-29,-74)
    Paginator使ってるページで、URLに「limit:1000」とかパラメータを埋め込まれると
    controllerで設定したlimitを上書きしちゃうんだけど、URLからのパラメータ指定を
    無効にするにはどうしたらいいの?
    815 : nobodyさん - 2011/10/27(木) 20:51:35.70 ID:??? (+70,+29,-4)
    >>812
    小規模ってどれくらいまでが小規模ですか
    ECサイトくらいだと小規模かな
    816 : nobodyさん - 2011/10/27(木) 20:58:48.27 ID:??? (+67,+28,-21)
    >>814
    たしか2.0から無効になるパラメータがあったはず。
    1.3以前なら無理だと思う。素直に自分で上限付けるべき。
    817 : nobodyさん - 2011/10/27(木) 23:58:13.08 ID:??? (+45,-29,-54)
    >>816
    ありがとう。2.0の変更内容を見ていてはじめて、URLパラメータでlimitが任意で指定できることを知った。
    limitに1000000とか指定されても迷惑なので、paginateのwhitelistにきちんと値を設定することにするよ。
    818 : nobodyさん - 2011/10/28(金) 03:53:00.84 ID:0WPYyAnp (-24,-13,-120)
    スマホアプリ用のJSON返すだけの画面のないWeb APIで
    CakePHP2.0使おうかと思ってるんだけどどうっすかね?
    Web APIの数は数十本くらいになると思うんだけど
    その程度でCakePHPはやめとけとか他のフレームワークの方がいいよとか
    意見聞かせてください。
    819 : nobodyさん - 2011/10/28(金) 03:59:15.54 ID:??? (+53,+25,-22)
    データベース結果からJSON返すの楽だし止める理由は無いです
    820 : nobodyさん - 2011/10/28(金) 04:08:11.79 ID:??? (+70,+29,-36)
    >>817
    それ、設計がおかしくないか?
    セレクトメニューから件数選ぶのが定石だと思うが。
    821 : nobodyさん - 2011/10/28(金) 06:51:50.59 ID:??? (+59,+27,-35)
    http://book.cakephp.org/ja/view/1323/%E3%82%B3%E3%83%B3%E3%83%86%E3%82%A4%E3%83%8A%E3%83%96%E3%83%AB
    お前らコレ使ってる?
    なんか複雑なクエリ発行したいときに便利そうだが
    822 : nobodyさん - 2011/10/28(金) 09:40:50.71 ID:??? (+12,-29,-49)
    >>820
    言葉が足りなかった。件数の設定をやめさせる、というわけではないよ。

    コントローラでlimitをパラメータから取得して、paginateのオプションに
    明示的に設定してから、paginateを実行する。
    824 : nobodyさん - 2011/10/28(金) 12:42:59.99 ID:??? (+54,+29,-6)
    >>818
    実際やってるけど楽です
    管理画面も同時に作ってます
    825 : nobodyさん - 2011/10/28(金) 12:45:33.90 ID:??? (+5,-29,-6)
    >>821
    使ってます
    recursiveとjoinsと組み合わせて
    826 : nobodyさん - 2011/10/28(金) 14:26:18.96 ID:??? (+7,-20,-3)
    Containable使わないとか有り得ない程度には思ってる
    827 : nobodyさん - 2011/10/28(金) 15:09:23.87 ID:??? (-1,-29,-16)
    俺も。
    時々Containableでは賄いきれなくてbindModelとか使うはめになるとチッって思う。
    828 : nobodyさん - 2011/10/28(金) 16:10:21.67 ID:??? (+57,+29,-9)
    俺はもうjoinsを中心に使ってる。
    色々付けたり外したりしてると、わけわからんようになってくるしw
    829 : nobodyさん - 2011/10/28(金) 16:33:42.39 ID:??? (-1,-29,-6)
    Containableって要はなんなの?
    わかりやすく説明して賢い人!
    830 : nobodyさん - 2011/10/28(金) 16:54:11.63 ID:??? (+9,-18,+1)
    ボクもContainableしりたい
    831 : nobodyさん - 2011/10/28(金) 17:45:15.20 ID:??? (+8,-29,-79)
    containableは基本的に全部のモデルを関連づけておいて、必要に応じて取ってくるモデルを選択するやりかた
    bind,unbindするより500倍扱いやすい

    http://book.cakephp.org/ja/view/1323/%E3%82%B3%E3%83%B3%E3%83%86%E3%82%A4%E3%83%8A%E3%83%96%E3%83%AB
    >コンテイナブルを使わないならモデルの unbindModel() を使用することになります。複数のモデルを切り離すなら、
    >unbindModel() を何度も実行しなければなりません。コンテイナブルによって同じことをより簡潔に行えます。
    832 : nobodyさん - 2011/10/28(金) 18:19:37.84 ID:??? (+7,-27,-22)
    >>831
    関連付けってアソシエイションのことだよね?
    関連付けたモデルを取得しないってのは
    recursiveでやるじゃなかったっけ?
    833 : nobodyさん - 2011/10/28(金) 18:33:08.66 ID:??? (+9,-29,-78)
    paginate使ってる人、
    groupオプション(GROUP BY)付けてページネートしてみて
    ページが1ページしかないように返してくるから
    これってバグだよね?

    ググってみると、
    http://d.hatena.ne.jp/aroundthedistance/20090728/1248784179
    こんな記事もあるんだけど、
    2009年の記事なのに未だに(1.3使用)直ってないってこと?
    834 : nobodyさん - 2011/10/28(金) 19:31:34.10 ID:??? (+57,+29,-9)
    モデルの関連づけがいまいちわからないのですけどいいサイトあったらおしえてください
    835 : nobodyさん - 2011/10/28(金) 22:04:00.46 ID:??? (+41,+13,-26)
    結局cookbook以外は断片的な情報集めるしかない気がする
    836 : nobodyさん - 2011/10/28(金) 22:14:35.50 ID:??? (+57,+29,-21)
    実開発でもそうだった。
    検索して、ヒットしたブログ記事を参考に実装してた。
    837 : nobodyさん - 2011/10/28(金) 23:14:17.04 ID:??? (+47,-30,-102)
    >>832
    recursiveでもできるよ。
    だけど、containableを使うともっと細かく制御できる。
    例えば、
    usersテーブルに
    hasOneでprofilesテーブルと
    postsテーブルが
    関連付けされててusersとprofilesだけ欲しい場合

    $this->Users->find('all', array('contain' => 'Profile'));で取れる。
    838 : 837 - 2011/10/28(金) 23:20:05.03 ID:??? (+7,-30,-68)
    さらに、ProfileにState(都道府県)を関連づけしてる場合

    $this->Users->find('all', array(
      'contain' => array(
        'Profile' => array('State')
      )
    ));
    で取れる。
    839 : nobodyさん - 2011/10/29(土) 02:46:57.22 ID:??? (+8,-30,-137)
    >>833
    誰かこれどう?1.3以上の人試してくれない?
    コントローラの設定で、
    var $paginate = array(
      'Model' => array(
        'group' => 'Model.id',
        'order' => 'Model.id DESC',
        'limit' => 5,
      )
    );
    としてみるだけでいい
    ページネーションのページ数が1になる
    (ページ数(pageCount)が入っている配列はView内で $paginator->params() で取得可能)
    840 : nobodyさん - 2011/10/29(土) 02:54:42.55 ID:??? (+33,-29,-87)
    >>839
    ・paginateメソッドがgroupに対応するとより複雑なグルーピングなどに対応できないなどの
    拘束が生まれるので仕様
    ・バグじゃないから直らない
    ・記事の通りコールバック書け
    841 : nobodyさん - 2011/10/29(土) 12:19:25.54 ID:??? (-1,-29,-20)
    >>838
    都道府県にはprefを使って欲しい。
    stateじゃアメリカ合衆国の州をイメージする
    842 : nobodyさん - 2011/10/29(土) 14:14:52.28 ID:??? (+62,+29,-9)
    >>840
    まだ直ってないのか・・・
    バグというより非対応って考えなきゃいけないのか
    843 : nobodyさん - 2011/10/29(土) 18:13:26.22 ID:??? (+62,+28,-4)
    >>837-838
    これはわかりやすい!直感的にイメージできた。GJ!
    844 : nobodyさん - 2011/10/30(日) 09:00:13.02 ID:??? (+88,-30,-285)
    CakePHPで画像のサムネイルをリアルタイム(アクセス毎)で生成してるんだけど、
    40画像ぐらい表示させると、表示しない画像がちらほら出てくる・・・

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

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

    ちなみに ZOZOTOWN(http://zozo.jp)はCakePHPではないと思うけど、
    上記のような感じでアクセスされて生成している模様
    845 : nobodyさん - 2011/10/30(日) 10:55:31.34 ID:??? (+59,-29,-54)
    ZOZOTOWNみたいなアクセスの多いサイトがアクセスの度にサムネイルを生成してるわけがない。
    実装に問題あり。
    846 : nobodyさん - 2011/10/30(日) 12:54:12.82 ID:??? (+79,-15,-16)
    サムネイルは本画像保存時に同時に作成するのが普通では?
    847 : nobodyさん - 2011/10/30(日) 18:03:57.54 ID:??? (+35,+7,-17)
    さすがに40個を毎回作成してたら不具合出るわw
    848 : nobodyさん - 2011/10/30(日) 23:20:56.06 ID:??? (+0,-29,-24)
    >>846だな
    サムネイルキャッシュは公開ディレクトリに置くか、tmpディレクトリに生成して生PHPで読みに行かせるのがいいと思う
    849 : nobodyさん - 2011/10/31(月) 00:54:49.04 ID:??? (-1,-29,-35)
    PHP通すなら、HTTPヘッダでブラウザにキャッシュさせることも考えたほうがいい。
    Mediaビューが便利。
    850 : 844 - 2011/10/31(月) 06:30:50.20 ID:??? (+166,+30,-100)
    みなさんありがとうございます。

    >>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 スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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