元スレ【PHP】フレームワーク CakePHP 12ホール目【笑】
php覧 / PC版 /みんなの評価 :
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のような人気サイトはどう対応してるのか・・・
みんなの評価 :
類似してるかもしれないスレッド
- 【PHP】フレームワーク CakePHP 17ホール目【v3α】 (955) - [92%] - 2016/11/15 20:45
- 【PHP】フレームワーク CakePHP 14ホール目【v2.1】 (1001) - [92%] - 2012/12/3 19:16
- 【PHP】フレームワーク CakePHP 19ホール目【v3.3】 (844) - [92%] - 2023/2/2 14:30
- 【PHP】フレームワーク CakePHP 16ホール目【v2.4】 (1001) - [92%] - 2014/3/3 3:00
- 【PHP】フレームワーク CakePHP 11ホール目【v1.3】 (1001) - [92%] - 2011/6/30 22:32
- 【PHP】フレームワーク CakePHP 15ホール目【v2.2】 (985) - [92%] - 2013/9/7 8:30
- 【PHP】フレームワーク CakePHP 17ホール目【v2.4】 (984) - [92%] - 2015/1/10 2:45
- 【PHP】フレームワーク CakePHP 10ホール目【v1.3】 (1001) - [92%] - 2011/2/13 8:32
- 【PHP】フレームワーク CakePHP 13ホール目【v2.0】 (995) - [92%] - 2012/4/23 21:16 ○
- 【PHP】フレームワーク CakePHP 8ホール目【1.3】 (1001) - [91%] - 2010/7/22 22:16
- 【PHP】フレームワーク CakePHP 9ホール目【v1.3】 (1001) - [90%] - 2010/11/1 2:53
- 【PHP】フレームワーク CakePHP 3ホール目【本命】 (1001) - [87%] - 2008/6/19 7:19 ○
- 【PHP】フレームワーク CakePHP 6ホール目【v1.2】 (933) - [87%] - 2009/8/19 2:06 ○
- 【PHP】フレームワーク CakePHP 5ホール目【v1.2】 (985) - [87%] - 2009/3/7 4:53 ☆
- 【PHP】フレームワーク CakePHP 7ホール目【v1.2】 (1001) - [87%] - 2010/3/18 1:18 ○
トップメニューへ / →のくす牧場書庫について