トップページ⇒php
981コメント296KB

【PHP】フレームワーク CakePHP 17ホール目【v2.4】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2014/03/01(土) 17:03:24.57ID:8AJ9GD6E
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※他フレームワークとの比較等はスレ違いです

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
Issue
http://cakephp.lighthouseapp.com/dashboard
CheatSheet[1.2] (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] http://book.cakephp.org/2.0/ja/index.html
[1.3] http://book.cakephp.org/ja

※前スレ
http://kohada.2ch.net/test/read.cgi/php/1378659370/
0202nobodyさん2014/04/03(木) 00:46:56.03ID:???
>>201
お前の会社がオーバースペックのサーバ納品してボッてるだけだろ
0203nobodyさん2014/04/03(木) 02:21:11.20ID:???
>>202
サーバー安いしねぇ。
運用コストも含めて、要求以内だよ。
チューニングの余地は、アプリケーションのコードにもインフラ構成にも、普通に残ってると思うけど。
サーバー代が1割2割減ったところでたいした額じゃない。
それより、開発・保守開発が効率よくできるほうが、開発費がかからなくてありがたいね。
0204nobodyさん2014/04/03(木) 08:59:09.29ID:???
cakeは開発工数の少なさ、技術者の安さはトップクラスだから開発費は安いんだよな。
前も上がってたけど、ソーシャル系は厳しいな。用途次第ってことだ。
ボトルネックの経験がないところには発注するのは怖いな。ネックになった時に投げ出される可能性が高いってことだろ?
0205nobodyさん2014/04/03(木) 10:11:20.11ID:???
なのに、市場ではボトルネックを一切無視して、価格競争してるからな
0206nobodyさん2014/04/03(木) 14:48:37.49ID:???
それでいいんじゃね。
パフォーマンスとかうるさく言うんなら、FWやORMはおろか動的言語使うこと自体が要件に合ってないだろ。
0207nobodyさん2014/04/03(木) 15:13:32.96ID:???
>>203
インフラ代がいくらのレンジの話よ?
0208nobodyさん2014/04/03(木) 15:28:38.04ID:???
1000円以下
0209nobodyさん2014/04/03(木) 16:46:48.77ID:???
>>204
ボトルネックの経験って?
0210nobodyさん2014/04/03(木) 19:56:07.66ID:???
>>197
俺も前なった
1.3のいくつかの時までのバグだったから
今はもう起きないんじゃないか?
0211nobodyさん2014/04/03(木) 20:11:13.79ID:???
関係ない話で申し訳ないが、
2ch乗っとられたってマジらしいな

2chドットsc に移行するらしいが、
'2ch' . '.sc' ってのをNGワードにしているらしい
0212nobodyさん2014/04/03(木) 23:37:19.01ID:???
>>207
数万〜数十万/月
ってところだね。
0213nobodyさん2014/04/03(木) 23:41:04.71ID:???
どれどれと思ってやってみたら

ERROR:さくらが咲いてますよ。

ってなって書き込みできんかった。
どうでもよかったけど、サーバー側でNGワードとかされると引くわ・・・
0214nobodyさん2014/04/04(金) 15:29:28.73ID:???
>>212
人件費込み?
0215nobodyさん2014/04/04(金) 19:02:20.90ID:???
そうだよ
0216nobodyさん2014/04/05(土) 00:43:47.97ID:???
>>214
人件費は入ってないよ。
インフラが得意でインフラ方面のタスクをよくやってる人はいるけど、
インフラだけやってるって人はいないからね。
ただ、自分たちで何でもやらないとなものもあれば、
ある程度は作業を依頼できるインフラ屋さんに頼んでるのもあったから、
そういう場合は一部入ってると言えるかもしれない。
0217nobodyさん2014/04/05(土) 16:20:54.14ID:???
>>214
数万で込とかw
0218nobodyさん2014/04/05(土) 23:26:04.89ID:???
開発費は人件費だから
込みじゃないと比較できんな
0219nobodyさん2014/04/06(日) 01:43:29.71ID:Iec7CVL5
Cake3 触った人いる?

さっきちょっと見てみたんだけどさ、Model の扱いがぜんぜん違うんだな。

これ Cake2 から移行するのって最初から作るのと同じぐらい大変かもしれないな。

というか、それ以上に苦労するかもしれないな。
0220nobodyさん2014/04/06(日) 03:31:19.46ID:???
>>218
?
0221nobodyさん2014/04/06(日) 04:05:49.26ID:???
>>219
> さっきちょっと見てみたんだけどさ、Model の扱いがぜんぜん違うんだな。
やっとあるべき姿になったという感じだよね
元々Railsにインスパイアされてできたはずなのに、配列で返ってくるところは絶対変だったよな
まぁ、PHP4に引きずられたんだろうけど…
0222nobodyさん2014/04/06(日) 10:13:55.10ID:???
人件費込みのインフラ費が
一人月超えてくると
開発費との比較が必要になってくるな

それまではcakephpで悩まんな
0223nobodyさん2014/04/06(日) 20:45:00.75ID:???
今日は寒いな
まだストーブが要るとは思わんかった、灯油がもうないよ…
0224nobodyさん2014/04/07(月) 10:47:00.11ID:???
フォームのidを手動でCake式に変換する方法(関数)ってありますか?
test_hogeというnameならTestHogeにするみたいな
0225nobodyさん2014/04/07(月) 18:57:19.67ID:LGjnvRjr
>>224
FormHelper::domId()
0226nobodyさん2014/04/07(月) 19:46:25.07ID:???
>>225
思い通り出来ました!ありがとうございました。
0227nobodyさん2014/04/08(火) 11:37:39.61ID:???
チェックボックスを使ったバリデーションで質問です。
ルールを以下のようにしているのですが、
'rule' => array('multiple')
チェックボックの値に0がある場合、1つ選択しただけではfalseになります。
0という値を許可するには、独自バリデーションを作る必要があるのでしょうか?
0228nobodyさん2014/04/08(火) 14:29:13.60ID:DFrq8Phr
>>227
Validation::multiple() を見たら、

$check = array_filter((array)$check);
if (empty($check)) { return false; }

ってなってるから、ここで弾かれちゃうんだね。
フィールドの値を変更するか、自作するしか無いね。

コールバック渡せるように作ってくれれば良いのになぁ。
Cakeは、この辺の中途半端な不自由さが結構あるんだよな。
0229nobodyさん2014/04/08(火) 14:55:21.04ID:???
>>228
わかりました。自作します。

半角英数字のチェックを配列対応してなかったり、
確かに不自由さは多いですね。
0230nobodyさん2014/04/08(火) 22:23:04.86ID:???
>>229
checkboxは他のtypeと違って1個もチェックしないと、空文字列すら送らないんだよね。
なのでFormHelperでチェックボックスを生成した場合、hidden value="0"がチェックボックスと一緒に用意される。
だからバリデーションもそれにあわせて、0は真偽でいうと偽の値になってるんだ。
オレオレフレームワークからCakePHPに乗り換えたときは、そういうところに押し付けがましさを感じていたけど、
慣れてしまえばまぁ合理的かなと思うよ。
チェックボックスをDBにあるマスターテーブルから生成するような場合(割とよくあると思う)、
valueはそのテーブルのidにするのが自然だし、idは1から始まるのが基本的だからね。

なので、CakePHPで開発していくなら、バリデーションを自作するより、
チェックボックスのvalue="0"は未選択とするように、変更するのをお勧めするよ。
0231nobodyさん2014/04/09(水) 10:48:16.40ID:???
バリデーションで便乗質問ですが、
名前の姓・名のように、1つの項目で2つの入力箇所がある場合、
バリデーションはどうすればいいのでしょうか?

フォームのnameが
姓:data[User][name][sei]
名:data[User][name][,mei]

として、これ自体のバリデーションは独自関数を作れば出来ますが、
個別にエラーを出力することって出来ませんよね?
例えば「姓が未入力です」「名を日本語で入力してください」
とか出力したいのですが、validateのルール指定では
名前(name)に対する指定で、その下の連想配列に対する
姓(sei)や名(mei)には指定できないです。
0232nobodyさん2014/04/09(水) 11:56:22.61ID:???
cakeでも2.4.7でauthコンポーネント利用して認証入れてますが、
f5連打でセッション切れ起こしませんか?
ググって調べてでてきた情報で

Config/core.php最下部に

Configure::write('Security.cookie', 'cakephpfdebackend');
Configure::write('Session.checkAgent', false);
Configure::write('Security.level', 'low');

を追記してますが効果無し。
IE、FireFox、Chrome全てでセッション切れます。
2.3時代からcomposerでアップデートして現在最新ですが
2.3時代でも起きていたように思います。

開発途上段階でaclを入れようと、
alaxos/aclプラグインを導入しましたが、
設定画面で全てのアクションに対するRoleごとの権限をajaxで取りにいく部分があって、
既存のアクションが50はあるので、Role3つ*50で150回のajaxリクエストが走りますが
この途中で確実にセッション切れを起こしてしまい、困ってます。
セッション切れが起こるタイミングはまちまちで、リクエスト回数によるものではなさそうです。
$this->Auth->allow()を置いて認証を使わないようにしないと設定できない状況です。

何か手がかりになりそうな情報はないでしょうか?
0233nobodyさん2014/04/09(水) 12:49:01.33ID:???
>>231
バリデーションもだけど、その構造だとsave()できなくないか?

姓:data[User][sei]
名:data[User][mei]

どういうテーブルスキーマか知らんけど、普通にこれでいいんじゃないの?
0234nobodyさん2014/04/09(水) 13:22:45.53ID:???
>>233
beforeSaveで1つのnameにするので大丈夫かと思います。

単純にsei、meiを分ける方法が一番簡単だと思うのですが、
日付のフォームとか、Cakeは連想配列で管理しているので
同じように[name][sei]と出来れば良いなと思っています。
0235nobodyさん2014/04/09(水) 21:52:21.95ID:???
>>232
どう?
http://www.matomater.com/9769/
0236nobodyさん2014/04/10(木) 06:44:41.50ID:???
>>234
でも日付って、年月日で別個にバリデーションできたっけ?
日付としてひとまとまりだったような気がしたけど。
日付はそのままsave()出来るような気がしたけど、これって特殊だよね。
日付で出来る事だからといっても、その辺CakePHP内であまり汎化されてないような気がする。

まぁdata[User][name][sei] でポストするのはうまくいくとしたとしても、
バリデーションはすっきりとは行かないんじゃないか?
0237nobodyさん2014/04/10(木) 09:24:25.58ID:???
>>236
確かにそうですね。
それに年月日の場合、個別にバリデーションする必要無い気もします。
単に「日付が正しくありません」というメッセージを出せば
年が抜けてるのか月が抜けているのか関係無いような。

でも、この辺がもう少し柔軟性あればいいですよね
やっぱりフォーム側を[name_sei]のように変えるしか無いんですかね・・・
0238nobodyさん2014/04/10(木) 10:57:39.51ID:ekNccxsF
>>237
バリデーションしてから beforeSave 出来るわけだから、
スキーマを name にして、ルールを sei, mei の2つにする。
んで、 beforeSave で値を結合すれば良いんじゃない?

ただ、バーチャルフィールドを使わない理由は?
name を1フィールドにしなくてはならない要件があるの?
0239nobodyさん2014/04/10(木) 11:10:48.64ID:ekNccxsF
え、dateフィールド見たいにフォームで name の下に作ってるのか!

>>236 の言うように date や datetime は
Model で各要素を個別に扱えるようには作られてない。
0240nobodyさん2014/04/10(木) 11:12:27.99ID:???
あ、 何も考えずに age てた。sage にした方が良かったんかな
0241nobodyさん2014/04/10(木) 12:41:05.32ID:???
>>235
情報ありがとうございます。
if(!isset($_SESSION)) session_start();
を試したところ、セッションは切れないのですが
CAKEのセッション機構の設定が全部死んでしまいました。
これで解決させるとまずそうです。

最初からやっとけという話ですが、
CakeSessionを追ってみたところ、Session.autoRegenerateがtrueの場合
ある一定数のリクエストがあるごとにセッションIDを変更しており、
その変更のタイミングで同時リクエストが走ると
そこからセッション切れが発生する事がわかり、
autoRegenerateをfalseにして解決しました。
0242nobodyさん2014/04/10(木) 14:11:17.70ID:???
Cakeのセッション周りは昔から謎の挙動をするよな
詳細は忘れてしまったけど、要注意だ
0243nobodyさん2014/04/10(木) 14:21:07.20ID:???
そういうのがあるからフレームワークは怖い
Strutsみたいのだとまた違うけれど
0244nobodyさん2014/04/10(木) 14:33:01.94ID:???
>>237
FormHelperのコードを見るとわかるけど、バリデーションのエラーメッセージの表示は、
Modelname.fieldname という構成を想定してるよ。
バリデートルールはModelに書くから、Controllerが保持する$validationErrorsも、
[Modelname][fieldname]という2次元配列で格納されている。

$this->Form->input('Modelname.fieldname') で、その$validationErrorsの中身と対になるようになってる。

例外でモデル名を省略できるケースはいくつかある。
$this->Form->create('Modelname');
$this->Form->input('fieldname');

Controllerのusesが1個の場合と、複数ある場合1個目のモデル、usesを書かずコントローラー名からモデル名がわかる場合は、
$this->Form->create();
$this->Form->input('fieldname');
でもいけたような気がする。たぶん
0245nobodyさん2014/04/10(木) 14:37:55.60ID:???
Cakeで一番困ったのは>>197のバグでテーブル全部消されたこと
0246nobodyさん2014/04/10(木) 15:58:45.85ID:???
てか、そんなこと1回もなったことないけど、
ほんとにそんなバグあるの?
0247nobodyさん2014/04/10(木) 16:11:15.52ID:???
bakeしてんだけどviewだけが何故か生成されない
Cake2.3.5で、Windowsのコマンドプロンプトからbakeしてます

cake bake view テーブル名 を実行しても

Welcome to CakePHP v2.3.5 Console
---------------------------------------------------------------
App : app
Path: appのパス
---------------------------------------------------------------

と出るだけで終了して何も起きない

インタラクティブでやると

Would you like to create the views for admin routing? (y/n)
[n] >

の後で終了して、何も起きない
0248nobodyさん2014/04/10(木) 16:11:16.67ID:???
本当なら使用しているバージョン、どんなコードで再現したかなど
詳細を書いてほしいものだ
レスがなければ嘘だと判断していいと思う
0249nobodyさん2014/04/10(木) 16:13:07.05ID:???
>>246
WHERE 1=1 でDELETE発行するバグが1.3.4まであった
http://web.archive.org/web/20110803234417/http://cakephp.lighthouseapp.com/projects/42648/tickets/250-model-delete-bug
ググれば過去スレも出てくるよ、12ホール目
0250nobodyさん2014/04/10(木) 18:03:59.14ID:???
興味あったんで本当にテーブル削除されることがあるのか試してみた
以下のコードをコントローラのアクションに入れて実行
$this->テーブル->delete();

バージョン 1.3.2 1.2.8 1.2.0 のいずれも発生しなかった
>>249の提示した記事は英語なのであまり深くは読めていないが
ライブラリのmodel.phpを修正して$model->exists()をコメントアウトしてみたところ、
一応再現はできた

まとめると
�@モデルのexistsメソッドをidが指定されていなくてもtrueを返すように上書き
�Aモデルのdeleteメソッドを引数なしで実行
したときに DELETE FROM `テーブル` WHERE 1 = 1
が実行される(もちろん全テーブルじゃなくて1テーブルだけだが)
まあほとんどの人には縁のない現象といえるかな
もっと単純に再現できるコードがあるのなら提示してほしい
0251nobodyさん2014/04/10(木) 18:47:46.61ID:???
beforeDeleteはどこいった
0252nobodyさん2014/04/10(木) 19:06:10.92ID:???
普通に使ってるだけで起きたんだよなあ。
古いことなので今更調べる気にはなれない。
0253nobodyさん2014/04/10(木) 20:45:55.49ID:???
なるほどね、よくわかった
オラクルとかのトリガーでも自テーブルへの処理は参照すらできないから
記事のbeforeDeleteのような実装は単なるコーディングミスと判断していたよ
普通の処理とみなす人もいるってことね
0254nobodyさん2014/04/10(木) 20:58:33.13ID:???
Cakeに限らずだが、FMって問題が起きた時に
その原因を突き止めるのに苦慮することが多いよね
0255nobodyさん2014/04/10(木) 21:09:13.27ID:???
そんなことよりbakeできなくて困ってるんですが
0256nobodyさん2014/04/10(木) 21:58:13.10ID:???
FMってなんだ
0257nobodyさん2014/04/11(金) 21:38:10.95ID:???
フォームヘルパーの月(month)とday(day)って
どうして「01」と「1」に分かれているんですかね?
値はどちらも0が入っているのに
0258nobodyさん2014/04/15(火) 08:59:05.93ID:eAedbEAo
バリデーションルールで「url」を使うと、日本語が通らない?
そういうもんなの?使えねーじゃん
0259nobodyさん2014/04/15(火) 12:13:57.73ID:???
ちょっとハマったので情報投稿します。

2系(たぶん2.3〜)でCookieコンポーネントを使って
ユーザーデータ等を保存する場合、
$this->Cookie->write('Auth.User', $this->request->data['User']);
みたいにすると、
$this->Cookie->delete('Auth.User');
で削除できません。ログアウトの時にこれを入れても削除されません。

$this->Cookie->write('AuthUser'); で保存して
$this->Cookie->delete('AuthUser'); で削除はOKでした。
どうやらドット記法が原因のようです。

ログインフォームの自動ログインで上記のような書き方を
推奨しているサイトがちらほらあったので、注意してください。

ログインフォーム以外も何かしらCookieコンポーネントを
使うケースがあるかと思いますが、
出来るだけCookie名にドットを入れないほうが良いみたいです。
0260nobodyさん2014/04/15(火) 14:27:17.30ID:???
>>258
そもそもURL中のマルチバイトはURLエンコードしないとRFC的にだめなんじゃない?
違ったっけ?
0261nobodyさん2014/04/15(火) 15:56:03.67ID:???
>>258
ためしてみたけど普通に使えたよ
使ったバージョンは2.4.6
App::uses('Validation', 'Utility');
debug(Validation::url('http://ほげ.com/漢字.htm'));
結果はtrue
0262nobodyさん2014/04/15(火) 17:25:40.94ID:eAedbEAo
まじ?こっちは2.3.8でダメだった
バージョン上げてみようかな
0263nobodyさん2014/04/15(火) 18:29:39.18ID:???
$this->User->id = $id;
$user = $this->User->read();

みたいな書き方って、あんまりやらない方が良いみたいだね。
この後にsave(更新)したら、request->dataに無いカラムも更新しようとして
空更新されて焦ったわ
0264nobodyさん2014/04/15(火) 23:31:53.92ID:???
>>263
readなんて使ったことないなー。
0265nobodyさん2014/04/16(水) 13:37:09.77ID:???
Shellファイルをブラウザ上から確認する方法って無いですかね?
いちいちサーバにアップしてSSHからコマンド実行して〜
というのが面倒に感じまして。簡単に実行確認出来る方法があれば教えて下さい。
0266nobodyさん2014/04/16(水) 15:23:58.68ID:???
>>265
できるけど、結構大変だろうなと予測。
というかそもそも設計がおかしんじゃない?
Shellでもブラウザでも呼び出せるタスクを切り離すべきだと思う。
0267nobodyさん2014/04/16(水) 15:28:42.31ID:???
>>266
Shell内でコントローラを読み込んでアクションを実行できるんですね。
それならブラウザ上でも確認できるので問題なさそうです。
0268nobodyさん2014/04/16(水) 16:33:30.72ID:???
>>267
え、何でそういう方向に行くの?
まぁ、好きにすればいいけど
0269nobodyさん2014/04/16(水) 18:28:16.11ID:???
>>268
すまん。何が言いたいか分からん
0270nobodyさん2014/04/16(水) 19:41:36.54ID:???
>>266は設計がおかしいんじゃないかとか質問内容からは読み取れないことを
書いているうえに肝心の実現方法を書いていないので不適切な回答だと思うが
>>267の結論はもっと意味不明で全く>>266と噛み合っていないので
>>268で呆れられてしまったということだろう

たぶん>>266が「できる」と書いたのは
execやpopenでcake.shやcake.batを呼び出すことじゃないかと予想してみる
OS依存なので個人的にはお勧めできないが

Shellとコントローラの両方から「標準で」使えるものはモデルだけだと思うよ
コントローラやコンポーネントやヘルパーなどをnewして使うようなやり方は
動作はするかもしれないが正しいやり方とは思えないな
0271nobodyさん2014/04/16(水) 20:07:27.22ID:???
横だけど、正しい・正しくないは関係ないと思うけどな。
「正しい書き方ではないけど動作する」なら、それでいいんじゃないか?

こんな事言うといつも「複数で開発する場合は迷惑だ」とか言う奴いるけど、
目的は「動作する」事であり、綺麗なソースを書くことじゃない。

それに複数人で開発するなら
「良い書き方がわからなかったから、この方法にした」
って説明すればいいだけだろ。情報共有しろよ。
0272nobodyさん2014/04/16(水) 20:14:11.37ID:???
小難しい話は置いといて、 >>265 は
Shell で呼び出す処理を別の Model だか Lib のクラスに移して、
ShellからもControllerからも実行できるようにすれば良い
0273nobodyさん2014/04/16(水) 20:39:15.00ID:???
Shell使う処理で、Modelだけで済む事って無いと思うんだけどなぁ
よくあるメール一斉送信とかShellで作るけど、
その時の条件分岐やらModelに対する指示なんかはControllerに書くわけで。
メールの送信自体はライブラリ化しても良いと思うけど。
0274nobodyさん2014/04/16(水) 22:05:21.32ID:???
テストのためにそういうのが出来ないかって話なんだから正しい必要はないだろ
それができるとテストが便利で実装が楽でバグが減るんだっていうんだから

設計だとか綺麗かどうかとか関係ないだろ
0275nobodyさん2014/04/16(水) 23:00:28.05ID:???
いつからテストの話になったんだ
0276nobodyさん2014/04/17(木) 00:07:52.39ID:???
テスト機能の事じゃなくて、「試す」って意味の「テスト」じゃないか?
0277nobodyさん2014/04/17(木) 00:13:59.42ID:SXCfNI/g
大規模なシステムになった場合、PHPデバッガー等を使って
1行ずつステップデバッグ実行をした方が効率が良いものなのでしょうか?

cakePHPとかみたいなFWを使っている場合には
デバッガーがそこまで追い切れるのか若干気になります。

皆さんは、PHPで業務システムを作る時にはデバッガーを使っていますか?
それとも dumpで開発していますか?
0278nobodyさん2014/04/17(木) 00:19:14.66ID:???
>>277
人海戦術に頼る。クラウドソーシングとかで安く依頼できるしな。
やっぱ、システムだけで対応しようとすると、何かと抜けが出るよ。
0279nobodyさん2014/04/17(木) 00:26:59.39ID:???
自分はeclipseとXdebugを使ってステップ実行できる環境を使ってるよ
ステップ実行といってもすべての行を1行ずつ実行する必要はなくて
処理を追いたいところにブレークポイントをつけておけばいいだけ
ステップ実行するまでもない場合はdebug関数で変数の中身を画面で確認してる

>>261
2.3.8で試してみたらfalseになったんでバージョンが原因みたいだね

>>263
自分もreadは使ったことなかったんで試してみたところ、再現を確認
なかなか嫌な動きだわ
0280nobodyさん2014/04/17(木) 02:16:53.26ID:???
スレチだが、新しい方に移動した方がいいの?
0281nobodyさん2014/04/17(木) 06:59:31.54ID:+GQ/cWTu
CakePHPで複合主キーで構成されるテーブル同士の結合は
どのように実現すればよいのでしょうか?

[テーブル左] 列A*、列B*、列D*、列E*
[テーブル右] 列A*、列B*、列C
 (*は主キー)

のような構成で、
[テーブル左] に [テーブル右] を 列A、列Bをキーとして
列C を外部結合したいと考えています。
$virtualFields で1つにまとめて、$primaryKeyで定義しなす?
0282nobodyさん2014/04/17(木) 09:07:56.95ID:???
>>277
デバッカ使ってる

エクステンションでなければ中まで追えるので、cakeも追えるよ
0283nobodyさん2014/04/17(木) 12:22:28.87ID:???
特性スープやでぇ
0284nobodyさん2014/04/17(木) 12:35:55.72ID:???
特性スープやでぇ
0285nobodyさん2014/04/17(木) 14:12:21.40ID:???
>>281

'joins' キーでちまちま作りこんだほうが良い。
というか、以前調べたときはそれしか無理だった。
他に方法あれば教えて欲しい。

Cake3 から複合キー対応らしいけどね。
0286nobodyさん2014/04/17(木) 23:16:01.90ID:???
ツリービヘイビアを使ったカテゴリで、
親カテゴリから子カテゴリまで何階層あるか調べる方法って無いですかね?
無限にカテゴリを作れるのではなく、ある程度階層指定したいと思います。
簡単に表示する方法があるなら、エラー判定しやすいのですが
0287nobodyさん2014/04/17(木) 23:45:58.91ID:???
親要素の条件は、子エンティティと比較して
lft がより小さく且つrghtがより大きいので
子エンティティを $child、モデルのエイリアスを Foo 、階層を $depth とする場合
こんな風にしたら取れるはず

$childLft = $child['Foo']['lft'];
$childRght = $child['Foo']['rght'];
$conditions = array('Foo.lft <' => $childLft, 'Foo.rght >' => $childRght);
$depth = $Foo->find('count', compact('conditions')); // 親の階層数
0288nobodyさん2014/04/18(金) 05:19:37.24ID:???
>>285
ありがとうございます
Cake3で対応ですか!期待して待ってます
02892862014/04/18(金) 10:55:29.76ID:???
>>287
以下の様な階層だとして
テスト→子テスト→孫カテゴリ

287さんの方法では、「子テスト」を選ぶと1と表示され、
「孫テスト」を選ぶと2が表示されるなど、1つ上の階層番号しか表示されません。
02902862014/04/18(金) 10:56:34.64ID:???
すみません。2行目を書き間違えました。

テスト→子テスト→孫カテゴリ
ではなく
テスト→子テスト→孫テスト
でした。
0291nobodyさん2014/04/18(金) 13:04:19.06ID:N7yuefiZ
Cakeをインストールすると最初の画面でSecurity.saltとcipherSeedを変更する様に言われるけど、これは何桁でもいいの?
0292nobodyさん2014/04/18(金) 13:22:10.90ID:???
いいよ
0293nobodyさん2014/04/18(金) 13:39:34.12ID:N7yuefiZ
そうか、ありがとう
0294nobodyさん2014/04/18(金) 13:45:58.83ID:???
>>290
じゃぁ1足せよw
「親の階層数」って書いてるじゃん
0295nobodyさん2014/04/19(土) 16:38:03.71ID:2kVxcvEH
Cake人気ないな…
とうとうCakePHP bake なんたら でぐぐると食べ物のケーキの記事ばかり出てくるようになってしまった
0296nobodyさん2014/04/19(土) 17:11:08.54ID:???
ねぇよ
0297nobodyさん2014/04/19(土) 20:27:05.90ID:???
Cakeは海外で特に人気ないからな
0298nobodyさん2014/04/19(土) 20:37:49.07ID:???
え、国内の方がないと思ってた
0299nobodyさん2014/04/19(土) 20:39:03.09ID:???
PHPは日本で特に人気ないけどな
0300nobodyさん2014/04/19(土) 20:57:23.19ID:2kVxcvEH
そうか?PHPの仕事しか来たことないわ。Rubyとかどこで使ってるの?って感じ
0301nobodyさん2014/04/19(土) 21:42:49.70ID:???
>とうとうCakePHP bake なんたら でぐぐると食べ物のケーキの記事ばかり出てくるようになってしまった

どこの検索エンジンだよそれw
0302nobodyさん2014/04/20(日) 01:46:02.06ID:???
人気っていうか、すごい使われるけど評価は低いよね。
よく叩かれてる
■ このスレッドは過去ログ倉庫に格納されています