【PHP】フレームワーク CakePHP 5ホール目【v1.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/12/19(金) 15:52:19ID:ylogT+7chttp://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
cookbook(マニュアル)
http://book.cakephp.org/ja
the Bakery
http://bakery.cakephp.org/
■日本語フォーラム
http://cakephp.jp/
■過去スレ
【PHP】フレームワーク CakePHP 4ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1213892680/
【PHP】フレームワーク CakePHP 3ホール目【本命】
http://pc11.2ch.net/test/read.cgi/php/1205475360/
【PHP】フレームワーク CakePHP 2ホール目
http://pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/
0474nobodyさん
2009/01/22(木) 01:10:40ID:???親モデルの奥に配置するにはどうすればいい?
Model1->find('all',array(
'contain'=>array(
'Model2'
)),
結果:
array(
[0]=>array(
[Model1]=>array(),
[Model2]=>array(),
)
)
0475nobodyさん
2009/01/22(木) 10:29:14ID:???0476nobodyさん
2009/01/22(木) 12:48:42ID:???どのあたりのソースを見ればよいのでしょうか?
/app/config/database.php.default
に接続情報がありますが
これらの情報を使用して接続している部分あたりを見たいです
0477nobodyさん
2009/01/22(木) 12:53:15ID:???cake/libs/model/datasources
cake/libs/model/datasources/dbo
あたりかな
0478nobodyさん
2009/01/22(木) 12:54:16ID:???接続に言ってる所と言うのならその下のdatasources/dboの下
0479nobodyさん
2009/01/22(木) 15:44:55ID:???みんなはDBスキーマはどうやって管理してる?
前スレを見たら少し話題になってたけど、なんかgdgdに終わってた。
0480nobodyさん
2009/01/23(金) 00:16:41ID:???二重投稿防止しようとしてるんだけど全然防止できない
saveした後に明示的にセッションからトークン消してやればうまくいくんだけど、
皆様方そんなことをしている様子はないし
http://www.1x1.jp/blog/2006/12/cakephp_csrf.html
やってることはほぼこのまんま
1.2なんで$formでフォーム生成してるのが違うくらい
フレームワーク使ってるってのに全然サクサク感がねぇー
0481nobodyさん
2009/01/23(金) 02:23:23ID:???とりあえず、普通にSQLでやってる。
create_tables.sqlとか適当なファイルにcreate table文まとめてる。
で、Subversionで管理。
ほんとは、マイグレーションあると便利だけどね。
こんな感じの使い方ができるPHPスクリプトを作ればいいんだけど、
面倒だからやってない。でも、そのうちやるつもりw
php rake.php db:migrate
php rake.php db:migrate VERSION=3
php rake.php db:create
php rake.php db:drop
0482481
2009/01/23(金) 02:38:24ID:???知らなかったわ。
今度試してみよう。
0483nobodyさん
2009/01/23(金) 04:06:53ID:???マニュアルのauthコンポーネントとACLのページを少ないから読んで見るといいかも
単純なログイン後とログインして無いとかならauthでいける
0484nobodyさん
2009/01/23(金) 07:29:32ID:YSArohX3一番新しいcreatedのデータを取得したりとかって、簡単にできますか?
やり方があれば、教えてください。
0486nobodyさん
2009/01/23(金) 10:46:31ID:???自分もこういうのを見つけていた。まあ「cakephp migration」でググっただけ
だけど。
"CakePHP migration" フォーラム - CakePHP Users in Japan
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1176&forum=3
CakePHP のおいしい食べ方: DBマイグレーションか、DBスキーマシステムか
http://cakephp.seesaa.net/article/97882341.html
誰か使っている人いないかな。
0488nobodyさん
2009/01/24(土) 16:41:32ID:???/document_root/siteA/ 配下と
/document_root/siteB/ 配下でわけたい。
siteA 配下は 教師モデルを対象に認証済みのユーザーはアクセス可能とし、
siteB 配下は 生徒モデルを対象認証済みのユーザーを対象にする。
当然、教師認証済みであってもは siteB にはアクセスできず、生徒は認証済みであっても
siteA にはアクセスできない
みたいな事がやりたいんですが。。。
0489nobodyさん
2009/01/24(土) 16:51:08ID:???0490488
2009/01/24(土) 17:14:12ID:???がんばって読んでみたんですが、そもそもユーザー認証を行なうモデルが異なる場合は
対応できないように思いました。
今回は、教師と生徒で登録されているテーブルが違うのでログインページも教師用と生徒用があります。
教師は siteA/login.php にて。生徒は siteB/login.php にて認証します。
で、教師でログインした場合は siteA 配下のみアクセス可能。生徒でログインした場合は siteB のみ
アクセス可能としたい。
かっこ悪いすが、サブドメインきって cake そのものを2通り用意したほうが簡単かもしれないと思ってしまいました。
何かよい方法があればいいな、と。
0491nobodyさん
2009/01/24(土) 22:19:27ID:???0492nobodyさん
2009/01/24(土) 22:20:11ID:???プログラマーのやり方じゃない
0493nobodyさん
2009/01/24(土) 22:44:47ID:???初心者がcakeのソースなんて追え無いんだから。
0495nobodyさん
2009/01/25(日) 11:58:58ID:???お前らのコントローラーの行数は最大でどの位ですか。
0496nobodyさん
2009/01/25(日) 12:03:41ID:???0497nobodyさん
2009/01/25(日) 19:50:45ID:???CakePHPの命名規則って、かなりでたらめ?
0498nobodyさん
2009/01/25(日) 21:22:02ID:???一つのクラス(コントローラー)の行数を短くしろとは
あまり聞かない。
0499nobodyさん
2009/01/25(日) 23:34:20ID:???「CakePHPポケットリファレンス」の命名規約(p.406-408)で
「これ、おかしんじゃない」のワースト3を教えて。
ttp://book.cakephp.org/ja/complete/22/CakePHPの規約
0500nobodyさん
2009/01/25(日) 23:37:01ID:???なんか楽しいw
0501nobodyさん
2009/01/26(月) 00:04:38ID:???コントローラーの命名規則
英単語の単数形+"Controller" って書いてるのに、例が PowerUsersController
モデル名+"_id"って書いてるのに、例がpower_users_id
あとある?
0502nobodyさん
2009/01/26(月) 01:11:31ID:???コントローラの命名規約
○クラス名 英単語の複数形+"Controller" PowerUsersController
テーブルとカラムの命名規約
○外部キー モデル名+"_id" power_user_id、article_id
(モデル名は単数形だよね。)
修正しました。
0503nobodyさん
2009/01/26(月) 10:35:54ID:???$form->create('User');
で作っていたとしたらどういう変数名・配列構造でセットすればいいの?
0505nobodyさん
2009/01/26(月) 12:24:49ID:j8WtT0GU1.2.1.8004へアップデート推奨らしいぞ。
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1696&forum=1&post_id=4032#forumpost4032
http://www.pseudocoder.com/archives/2009/01/22/cakephp-digest-6/
0506nobodyさん
2009/01/26(月) 13:21:32ID:???0508nobodyさん
2009/01/26(月) 16:40:15ID:j8WtT0GU0509nobodyさん
2009/01/26(月) 20:39:14ID:???マニュアル見ても、よく分からん。
0511nobodyさん
2009/01/26(月) 23:57:03ID:???よくわからんままやったら、
フィールド消えたわ
まじか、これ
0512nobodyさん
2009/01/27(火) 10:11:27ID:???0513nobodyさん
2009/01/27(火) 11:51:11ID:???testsuiteの解説がガイドブックとかに無いし、
web上にもあんまり情報が無いので、よくわからん。
でも。simpletestをインスコしたら、bakeの際に
いろいろ聞かれなくなったのは楽だな。
0514nobodyさん
2009/01/27(火) 12:20:04ID:???設置 URL が example.jp/t/ の時、tests というコントローラにアクセスしようと、
http://example.jp/t/tests/ ってやると、http://example.jp/t/ests/ に勝手になってしまって
Error: EstsController could not be found.
となります。 t に限らず webrootが1文字で とコントローラの最初の一文字が同じだと
上記のようになると思いますが、何か注意するところはありますか?
0515nobodyさん
2009/01/27(火) 12:32:20ID:???http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1706&forum=6&post_id=4025#forumpost4025
これと同じかな
0516nobodyさん
2009/01/28(水) 11:36:58ID:AHb2WVE2どうすればいいのでしょうか?
php直ですと日本語テーブル名でクエリは通ります。
0517nobodyさん
2009/01/28(水) 12:33:02ID:???とりあえず、認識した。
0518nobodyさん
2009/01/28(水) 18:06:35ID:???testって、データを入れて出して一致してるか確認してるんだって事が
ようやく少し分かった。
0519nobodyさん
2009/01/28(水) 18:29:34ID:???別に日本で使うシステムなら問題ないんだけどな
Oracle/Access+VBのシステムなんかよくあるし
PHPだって変数名ですら全角文字でもOKなんだし
0520nobodyさん
2009/01/28(水) 19:00:41ID:???全角って、そんなに変じゃないの?
bakeする時に日本語で全部作ってくれると楽そうだなーって思ってた。
多言語化を考える必要なんて全くない物を作るのにi18nすら面倒で、
ソースに日本語のエラーメッセージを書いてやろうと思ってた。
0521nobodyさん
2009/01/28(水) 19:02:34ID:???0522nobodyさん
2009/01/28(水) 19:04:55ID:???海外製のライブラリは対応出来てないものが多いし
結局、全角ゴリ押しは開発者側に負担を強いることが多いよ
プロジェクト内で使う環境を全部調査して、誰にも迷惑かけないと判明したら使えばいいと思うけど
0524nobodyさん
2009/01/28(水) 20:22:20ID:???cake bake allしてみた。
コンソールは微妙に文字化けしてたけど、難なく焼けた。
でも、アクセスしたらエラーが出た。ファイルを見たら、
ファイルがshift jisで認識されて、日本語部分は全部文字化け。
こんなことで苦労したくないので、これ以上は試すの止める。
0525nobodyさん
2009/01/29(木) 05:37:51ID:???いただきます。
今まで自作の簡易フレームワークで業務アプリを作ってきました。
画面数は数十あります。
表示はSmartyを使っています。
これを少しづつCakePHPに置き換えたいと考えていますが、
フレームワークを変更するとかなり大掛かりな作業になりそう
ですし、部分的に置き換えていくのが実際できるのかわかりません。
CakePHPは、上述のように既存のWebアプリを部分的に置き換えていける
ものなのでしょうか?
それとも、新規Webアプリから採用するべきものなのでしょうか?
0527nobodyさん
2009/01/29(木) 11:51:59ID:???最低クリアされるべき条件
・DBの構造(idとか)
・URL(/controller/action/param.. の形式)
がクリアされないといけない
そのうえで、Modelごと(≒tableごと)移行していくというのであれば、不可能ではないと思うが。
現実的には、DBを共通化して、Cakeによるサイトを作っていき、同時に稼働させてテストし、一気にリプレイスってことになりそうな気がするけど、どうなんだろうね。
ただ、Cakeに慣れるまである程度時間がかかるから、いずれにせよ新規アプリから始めないと、苦労すると思うよ。
0528525
2009/01/30(金) 06:58:44ID:???レスありがとうございました。
やはり新規案件からCakePHPをはじめたほうが無難ですね。
スキルを醸成してから、既存システムの変更を検討します。
0529nobodyさん
2009/01/30(金) 11:51:03ID:???データを引数に持たせてインスタンス同士をいろいろ比較してくれるクラスを
昔作ったんだけどどう持ち込めばいいのかわからない
0530nobodyさん
2009/01/30(金) 17:53:58ID:???1.2になってModel::findが大幅に機能強化されたのに、
記述が少なすぎる。もしくは、Model::generateList()
のページに代わりの方法が書いてあればいいが、
Model::find()だけでは意味不明だろう。
0532nobodyさん
2009/01/30(金) 18:55:05ID:???0533nobodyさん
2009/01/30(金) 19:21:00ID:???アソシエーションを使う方がいいのか、
Controller::usesで直接指定する方がいいのか。
0534nobodyさん
2009/01/30(金) 19:29:43ID:???たぶん親モデルと関連してるレコードしか該当しないよ
0535nobodyさん
2009/01/30(金) 23:31:39ID:???0536nobodyさん
2009/01/31(土) 01:44:15ID:ZNZRtHpp0537nobodyさん
2009/01/31(土) 04:27:13ID:???なるほど。
urlでパラメータを渡すなら、redirectでも良さそう。
でも、urlだと大きなデータは渡せないよね。
データが丸見えになるし。
あと、同じウィンドウの中でのみ渡すってなると、
どんな方法が良さそう?
0539nobodyさん
2009/01/31(土) 05:48:56ID:???いけるかな?と思ったが、甘かった。同じブラウザでは
renewする前のが消える。
別のブラウザなら大丈夫だった。(当たり前か)
0540nobodyさん
2009/01/31(土) 08:38:22ID:???ユニークキーの発行が正しい。
0541nobodyさん
2009/01/31(土) 09:18:36ID:???0542nobodyさん
2009/01/31(土) 09:28:15ID:???今CakePHPが注目を集めている為、素人が「PHPフレームワークなら俺にも何か簡単に
Webアプリが作れるかな。」という気になっているじゃない?
見方を変えるとCakePHPの功績は大きいかも?
0543nobodyさん
2009/01/31(土) 09:38:59ID:???0544nobodyさん
2009/01/31(土) 09:47:48ID:???0545nobodyさん
2009/01/31(土) 10:44:44ID:???0546nobodyさん
2009/01/31(土) 10:46:19ID:???保守不可能なシステムを作ってそう
0547nobodyさん
2009/01/31(土) 11:16:37ID:???exe屋だったら最初そんなもんだろ。
まあ、フレームワーク知識自慢しかできないようじゃ、
お前らすぐに抜かれるよ。
0548nobodyさん
2009/01/31(土) 13:50:46ID:???自作クラスなんてコンポーネントにしちゃえばいいよ。
で、コントローラーで
$this->Myclass->eat('hoge');
で。
>>535
作り方としてデータを渡したいような内容のものがあるならモデルに書いた方がいい。
で、コントローラーからそのモデルのアクションを読み出してデータを取得。
0549nobodyさん
2009/01/31(土) 16:13:14ID:x6QrlarVなにか方法があれば教えていただけませんでしょうか?
0550nobodyさん
2009/01/31(土) 16:23:21ID:???0551nobodyさん
2009/01/31(土) 17:40:26ID:???0552nobodyさん
2009/01/31(土) 17:50:06ID:???0553nobodyさん
2009/01/31(土) 18:44:40ID:???あるあるwwww
JavaScriptでもundefinedとunidentifiedをよく間違えるんだよな
0554nobodyさん
2009/01/31(土) 18:55:23ID:???なにかあるたびに配列にミスが無いかチェックしてるわ
0555nobodyさん
2009/01/31(土) 19:10:10ID:???0556nobodyさん
2009/01/31(土) 19:38:57ID:???ttp://www.openpne.jp/archives/1117/
と言う事は、OpenPNE3.0はPHP4のサーバにはインストール出来ないと言うことか?
多くのアプリがPHP4で開発されたもので、PHP5での稼働が保証されていないので、
サーバのPHPを5に出来ないんだよな。
0557nobodyさん
2009/01/31(土) 21:24:40ID:???モデルAとモデルBで、一応形としては
A hasMany B
B blongTo A
なんだけど、普段必要になるのは、Bのうちnot deleteのフラグが立ってる
1つのデータだけなのよ。そして、まれに(not delete関係なく)全ての
データが必要になる。これをどう扱ったら良い?
A hasOne B
にしても、BにA_idというフィールドが必要なだけに、こちらが望む
通りに紐付けするには条件(not delete=true)が足りない気がするし、
SQLの実行に時間や負担がかからないか心配だし、汎用性がどうか?
Bのデータをidで直接呼び出した方が早いような気がしたので・・・
Aに、not deleteに当るBのデータのidを入れるフィールドを作っていて、
AのコントローラでBのモデルも扱ってread(Bのid)ってするつもりだった。
だけど、このやり方って変?
0558nobodyさん
2009/01/31(土) 21:53:45ID:???ゆとりなの?死ぬの?
こんな風に A のモデル書いて
class A extends AppModel
{
var $hasMany = array('B' => array(
'className' => 'B',
'conditions' => array('B.delete' = 'not delete'),
),);
function hogehoge()
{
unset($this->hasMany['B']['conditions']['B.delete']);
return $this->find('all');
}
}
で、普段はコントローラから $this->A->find() でデータ取得して、
B.delete を無視する時は $this->A->hogehoge() 使うようにするだろう。jk
0559nobodyさん
2009/01/31(土) 23:42:40ID:???0560nobodyさん
2009/02/01(日) 01:12:20ID:???$data = array(
array(
'User' => array('id' => 1, 'name' => 'suzuki'),
'Tag' => array(
array('id' => 1, 'title' => 'hoge'),
array('id' => 2, 'name' => 'fuga')
),
),
array(
'User' => array('id' => 2, 'name' => 'sato'),
'Tag' => array(
array('id' => 1, 'name' => 'piyo'),
array('id' => 3, 'name' => 'moge')
)
)
);
$result = Set::extract('/Tag[id=1]/..', $data);
debug($result);
このとき$resultには、結果的に$dataと同じデータが入ると思うんですが、
「Notice (8): Undefined offset: 1 [CORE/cake/libs/set.php, line 415]」
というエラーが出て、2つめのデータが表示されません。何が原因なのでしょうか?
0561560
2009/02/01(日) 01:26:07ID:???PHPのバージョンは5.2.8、CakePHPのバージョンは1.2.1.8004です。
あと「array('id' => 1, 'name' => 'piyo'),」は、
「array('id' => 1, 'title' => 'hoge'),」とした方が自然ですね。
よろしくお願いします。
0562nobodyさん
2009/02/01(日) 22:33:35ID:???よくわからんけど。
Tagの添字のID=1が二つあるからじゃね?
それ以外の条件での検索については、エラーは出ないし。
0563nobodyさん
2009/02/01(日) 22:46:30ID:???基本は A hasMany B , B belongTo A なんだけど、
AとBは hasAndBelongToMany でもある。
(Aが担当教員で、Bが生徒と思えば。
Aの中に担任が一人居るような感じ。)
belongTo のAと、hasAndBelongToManyのAsを
どうやって取得し分けたらいい?
0565nobodyさん
2009/02/02(月) 05:46:05ID:lBmCzdKablog、どこにあったか知ってるひといたら教えてプリーズ
あとで見ようとしててどっかにいってしまいました
0566563
2009/02/02(月) 15:51:42ID:???一方を取得したくない時には、それでいけそうです。ありがとう。
だけど逆に、両方取得したい時に困りました。
当たり前かもしれませんが、両方が同じ変数に混ざってしまいます。
[B] => Array
(
[id] => 1
[name] => hoge
[0] => Array
(
[id] => 1
[name] => hoge
[AsB] => Array
(
[id] => 4
[A_id] => 1
[B_id] => 1
)
)
)
これ、どうやって分離する?
もしくは、別々の変数でとり出す方法は?
それとも、そもそもデータベースの設計がおかしい?
0567nobodyさん
2009/02/02(月) 16:28:39ID:???良くのみこめてないけど、tableに問題がありそうなきがする
teachers , students があるのかな?
classes があればすべて解決するような気がするけど違うのかい?
0568563
2009/02/02(月) 19:05:21ID:???だからgroupsも作ってあるけど、classesやgroupsのいずれでも
B blongsTo〜の関係にならないのです。
0569nobodyさん
2009/02/02(月) 19:06:34ID:???逆転しそう
0570nobodyさん
2009/02/02(月) 19:55:59ID:???いやいやそういうこっちゃないでしょ
もっと具体的に書いてみたらどうよ。
「A hasMany B , B belongTo A なんだけど、 AとBは hasAndBelongToMany でもある」って言われてもねえ
関係するModelと、そこで使われているアソシエーションの内容を、具体的にたのむ
0571nobodyさん
2009/02/02(月) 20:48:11ID:???これってGoogleでの検索件数のトレンドグラフだよねえ。
CakePHPは色々と問題が多くて、その解決法を探す為にみんなせってと「CakePHP」
キーワードで検索をしている。だから最近検索件数がウナギ登りなんだ。
と言う見方もあるのかなあ?世間の注目を集める為のCakePHPの戦略では?
0573563
2009/02/02(月) 21:22:19ID:???id
name
personsテーブル
id
name
user_id //これが主たるuser
persons_usersテーブル
id
person_id
user_id //その他のuser
Userモデル
var $hasMany = array('Person' => array('className' => 'Person',
'foreignKey' => 'user_id'));
Personモデル
var $belongsTo = array('User' => array('className' => 'User',
'foreignKey' => 'user_id'));
var $hasAndBelongsToMany = array('User' => array('className' => 'User',
'joinTable' => 'persons_users',
'foreignKey' => 'person_id',
'associationForeignKey' => 'user_id',
'unique' => true));
■ このスレッドは過去ログ倉庫に格納されています