[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 07/21 16:39 / Filesize : 152 KB / Number-of Response : 662
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】フレームワーク CakePHP 5ホール目【v1.2】



1 名前:nobodyさん [2008/12/19(金) 15:52:19 ID:ylogT+7c]
■本家
www.cakephp.org/
APIドキュメント
api.cakephp.org/
cookbook(マニュアル)
book.cakephp.org/ja
the Bakery
bakery.cakephp.org/

■日本語フォーラム
cakephp.jp/


■過去スレ
【PHP】フレームワーク CakePHP 4ホール目【v1.2】
pc11.2ch.net/test/read.cgi/php/1213892680/
【PHP】フレームワーク CakePHP 3ホール目【本命】
pc11.2ch.net/test/read.cgi/php/1205475360/
【PHP】フレームワーク CakePHP 2ホール目
pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
pc11.2ch.net/test/read.cgi/php/1163850802/


478 名前:nobodyさん mailto:sage [2009/01/22(木) 12:54:16 ID:???]
/cake/libs/model
接続に言ってる所と言うのならその下のdatasources/dboの下

479 名前:nobodyさん mailto:sage [2009/01/22(木) 15:44:55 ID:???]
CakePHP には、Railsでいうmigrationがないけど、
みんなはDBスキーマはどうやって管理してる?

前スレを見たら少し話題になってたけど、なんかgdgdに終わってた。

480 名前:nobodyさん mailto:sage [2009/01/23(金) 00:16:41 ID:???]
CakePHPの1.2.0.7962でセキュリティコンポーネントを使って
二重投稿防止しようとしてるんだけど全然防止できない
saveした後に明示的にセッションからトークン消してやればうまくいくんだけど、
皆様方そんなことをしている様子はないし

www.1x1.jp/blog/2006/12/cakephp_csrf.html

やってることはほぼこのまんま
1.2なんで$formでフォーム生成してるのが違うくらい

フレームワーク使ってるってのに全然サクサク感がねぇー

481 名前:nobodyさん mailto:sage [2009/01/23(金) 02:23:23 ID:???]
>>479
とりあえず、普通に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


482 名前:481 mailto:sage [2009/01/23(金) 02:38:24 ID:???]
今調べてみたら、1.2だと非公式だけどマイグレーションあるんだね。
知らなかったわ。
今度試してみよう。

483 名前:nobodyさん mailto:sage [2009/01/23(金) 04:06:53 ID:???]
>>473
マニュアルのauthコンポーネントとACLのページを少ないから読んで見るといいかも
単純なログイン後とログインして無いとかならauthでいける

484 名前:nobodyさん [2009/01/23(金) 07:29:32 ID:YSArohX3]
cakeのfindで、一番大きなidのデータを取得したり、
一番新しいcreatedのデータを取得したりとかって、簡単にできますか?
やり方があれば、教えてください。

485 名前:484 mailto:sage [2009/01/23(金) 07:37:43 ID:???]
sortして1番めを取得すれば良かったのか…
>>484自己解決で。素人ですみません。

486 名前:nobodyさん mailto:sage [2009/01/23(金) 10:46:31 ID:???]
>>481-482
自分もこういうのを見つけていた。まあ「cakephp migration」でググっただけ
だけど。

"CakePHP migration" フォーラム - CakePHP Users in Japan
cakephp.jp/modules/newbb/viewtopic.php?topic_id=1176&forum=3

CakePHP のおいしい食べ方: DBマイグレーションか、DBスキーマシステムか
cakephp.seesaa.net/article/97882341.html

誰か使っている人いないかな。



487 名前:nobodyさん mailto:sage [2009/01/23(金) 17:31:45 ID:???]
>>484
sql の max 関数 調べてみい

488 名前:nobodyさん mailto:sage [2009/01/24(土) 16:41:32 ID:???]
AuthComponent の認証をディレクトリ単位でわけるよい方法ってないでしょうか?

/document_root/siteA/ 配下と
/document_root/siteB/ 配下でわけたい。

siteA 配下は 教師モデルを対象に認証済みのユーザーはアクセス可能とし、
siteB 配下は 生徒モデルを対象認証済みのユーザーを対象にする。
当然、教師認証済みであってもは siteB にはアクセスできず、生徒は認証済みであっても
siteA にはアクセスできない

みたいな事がやりたいんですが。。。



489 名前:nobodyさん mailto:sage [2009/01/24(土) 16:51:08 ID:???]
acl

490 名前:488 mailto:sage [2009/01/24(土) 17:14:12 ID:???]
acl は、同一ユーザーテーブルの中での権限の割り当てではないでしょうか?
がんばって読んでみたんですが、そもそもユーザー認証を行なうモデルが異なる場合は
対応できないように思いました。

今回は、教師と生徒で登録されているテーブルが違うのでログインページも教師用と生徒用があります。

教師は siteA/login.php にて。生徒は siteB/login.php にて認証します。

で、教師でログインした場合は siteA 配下のみアクセス可能。生徒でログインした場合は siteB のみ
アクセス可能としたい。

かっこ悪いすが、サブドメインきって cake そのものを2通り用意したほうが簡単かもしれないと思ってしまいました。
何かよい方法があればいいな、と。


491 名前:nobodyさん mailto:sage [2009/01/24(土) 22:19:27 ID:???]
もっと嫁

492 名前:nobodyさん mailto:sage [2009/01/24(土) 22:20:11 ID:???]
cake2個用意するとか前にも言ってるやつが居たが
プログラマーのやり方じゃない


493 名前:nobodyさん mailto:sage [2009/01/24(土) 22:44:47 ID:???]
cakeはもっとサンプルが公開されてると、こうした初心者の人も助かりそうだね。
初心者がcakeのソースなんて追え無いんだから。

494 名前:nobodyさん mailto:sage [2009/01/24(土) 22:58:31 ID:???]
つーか公式マニュアルにAROとACOの説明があるのに
>>490の理解になるのはおかしい
ちゃんと読んでない

495 名前:nobodyさん mailto:sage [2009/01/25(日) 11:58:58 ID:???]
アクションが増えるとコントローラーの行数も増えるのたが、
お前らのコントローラーの行数は最大でどの位ですか。

496 名前:nobodyさん mailto:sage [2009/01/25(日) 12:03:41 ID:???]
アクションの数自体、1コントローラ最大で10くらいしか経験無いわ



497 名前:nobodyさん mailto:sage [2009/01/25(日) 19:50:45 ID:???]
「CakePHPポケットリファレンス」の資料に載ってる
CakePHPの命名規則って、かなりでたらめ?

498 名前:nobodyさん mailto:sage [2009/01/25(日) 21:22:02 ID:???]
一つの関数(アクション)の行数を短くしろとは聞くが
一つのクラス(コントローラー)の行数を短くしろとは
あまり聞かない。

499 名前:nobodyさん mailto:sage [2009/01/25(日) 23:34:20 ID:???]
>>497
「CakePHPポケットリファレンス」の命名規約(p.406-408)で
「これ、おかしんじゃない」のワースト3を教えて。
ttp://book.cakephp.org/ja/complete/22/CakePHPの規約

500 名前:nobodyさん mailto:sage [2009/01/25(日) 23:37:01 ID:???]
俺も手元の開いてみた
なんか楽しいw

501 名前:nobodyさん mailto:sage [2009/01/26(月) 00:04:38 ID:???]
えーっと、どれも酷いので順番は付けられないけど
コントローラーの命名規則
英単語の単数形+"Controller" って書いてるのに、例が PowerUsersController
モデル名+"_id"って書いてるのに、例がpower_users_id
あとある?


502 名前:nobodyさん mailto:sage [2009/01/26(月) 01:11:31 ID:???]
ホントだ。あるねえ。
コントローラの命名規約
○クラス名 英単語の複数形+"Controller"  PowerUsersController
テーブルとカラムの命名規約
○外部キー モデル名+"_id" power_user_id、article_id
(モデル名は単数形だよね。)
修正しました。

503 名前:nobodyさん mailto:sage [2009/01/26(月) 10:35:54 ID:???]
編集フォームの初期値をセットするには
$form->create('User');
で作っていたとしたらどういう変数名・配列構造でセットすればいいの?


504 名前:nobodyさん mailto:sage [2009/01/26(月) 10:52:09 ID:???]
>>503
$this->data['User']['name'] = '麻生太郎';

505 名前:nobodyさん [2009/01/26(月) 12:24:49 ID:j8WtT0GU]
1.2系のAuthComponentにおいて任意のidでユーザ認証されてしまう、という脆弱性が。
1.2.1.8004へアップデート推奨らしいぞ。

cakephp.jp/modules/newbb/viewtopic.php?topic_id=1696&forum=1&post_id=4032#forumpost4032
www.pseudocoder.com/archives/2009/01/22/cakephp-digest-6/

506 名前:nobodyさん mailto:sage [2009/01/26(月) 13:21:32 ID:???]
AuthComponentをStableから使い始めた俺は勝ち組w



507 名前:nobodyさん mailto:sage [2009/01/26(月) 13:41:36 ID:???]
>>505
ワロタw

どこがAuthなんだよ

508 名前:nobodyさん [2009/01/26(月) 16:40:15 ID:j8WtT0GU]
これってやばいんだよね?

509 名前:nobodyさん mailto:sage [2009/01/26(月) 20:39:14 ID:???]
testsuiteって使ってる?
マニュアル見ても、よく分からん。

510 名前:nobodyさん mailto:sage [2009/01/26(月) 22:55:14 ID:???]
>>508
機能として破綻してるw

511 名前:nobodyさん mailto:sage [2009/01/26(月) 23:57:03 ID:???]
ああー
よくわからんままやったら、
フィールド消えたわ
まじか、これ

512 名前:nobodyさん mailto:sage [2009/01/27(火) 10:11:27 ID:???]
バグが取れるまでstableにしませんとか誇らしげに語ってなかったっけ?w

513 名前:nobodyさん mailto:sage [2009/01/27(火) 11:51:11 ID:???]
>511はtestsuiteの話しな

testsuiteの解説がガイドブックとかに無いし、
web上にもあんまり情報が無いので、よくわからん。
でも。simpletestをインスコしたら、bakeの際に
いろいろ聞かれなくなったのは楽だな。

514 名前:nobodyさん mailto:sage [2009/01/27(火) 12:20:04 ID:???]
1.2.1.8004 Stable ですが

設置 URL が example.jp/t/ の時、tests というコントローラにアクセスしようと、

example.jp/t/tests/ ってやると、example.jp/t/ests/ に勝手になってしまって

Error: EstsController could not be found.

となります。 t に限らず webrootが1文字で とコントローラの最初の一文字が同じだと
上記のようになると思いますが、何か注意するところはありますか?

515 名前:nobodyさん mailto:sage [2009/01/27(火) 12:32:20 ID:???]
>>514
cakephp.jp/modules/newbb/viewtopic.php?topic_id=1706&forum=6&post_id=4025#forumpost4025
これと同じかな

516 名前:nobodyさん [2009/01/28(水) 11:36:58 ID:AHb2WVE2]
既存テーブル名が日本語で、cakeが認識しません。
どうすればいいのでしょうか?
php直ですと日本語テーブル名でクエリは通ります。




517 名前:nobodyさん mailto:sage [2009/01/28(水) 12:33:02 ID:???]
cake周りの文字コードをutf-8にしたら
とりあえず、認識した。

518 名前:nobodyさん mailto:sage [2009/01/28(水) 18:06:35 ID:???]
テーブル名が日本語ってトラブルの元じゃない? って、以前言われた。

testって、データを入れて出して一致してるか確認してるんだって事が
ようやく少し分かった。

519 名前:nobodyさん mailto:sage [2009/01/28(水) 18:29:34 ID:???]
テーブルとかカラムが全角文字だと激怒する奴いるけど
別に日本で使うシステムなら問題ないんだけどな
Oracle/Access+VBのシステムなんかよくあるし
PHPだって変数名ですら全角文字でもOKなんだし

520 名前:nobodyさん mailto:sage [2009/01/28(水) 19:00:41 ID:???]
>>519
全角って、そんなに変じゃないの?
bakeする時に日本語で全部作ってくれると楽そうだなーって思ってた。
多言語化を考える必要なんて全くない物を作るのにi18nすら面倒で、
ソースに日本語のエラーメッセージを書いてやろうと思ってた。

521 名前:nobodyさん mailto:sage [2009/01/28(水) 19:02:34 ID:???]
あ。でも、そうすると複数形ってどうすんだ?

522 名前:nobodyさん mailto:sage [2009/01/28(水) 19:04:55 ID:???]
DB関連の開発系ツールも含めて全て対応出来てるんならいいんだろうけど
海外製のライブラリは対応出来てないものが多いし
結局、全角ゴリ押しは開発者側に負担を強いることが多いよ
プロジェクト内で使う環境を全部調査して、誰にも迷惑かけないと判明したら使えばいいと思うけど

523 名前:nobodyさん mailto:sage [2009/01/28(水) 19:05:44 ID:???]
>>521
個別テーブル名定義で対応するしかないと思う
やったことないし試そうとも思わないから詳しくは知らない

524 名前:nobodyさん mailto:sage [2009/01/28(水) 20:22:20 ID:???]
早速、日本語名utf8のテーブルやフィールドを作って、
cake bake allしてみた。
コンソールは微妙に文字化けしてたけど、難なく焼けた。
でも、アクセスしたらエラーが出た。ファイルを見たら、
ファイルがshift jisで認識されて、日本語部分は全部文字化け。

こんなことで苦労したくないので、これ以上は試すの止める。

525 名前:nobodyさん mailto:sage [2009/01/29(木) 05:37:51 ID:???]
CakePHPは使ったことがありませんが、非常に興味があり質問させて
いただきます。

今まで自作の簡易フレームワークで業務アプリを作ってきました。
画面数は数十あります。
表示はSmartyを使っています。

これを少しづつCakePHPに置き換えたいと考えていますが、
フレームワークを変更するとかなり大掛かりな作業になりそう
ですし、部分的に置き換えていくのが実際できるのかわかりません。

CakePHPは、上述のように既存のWebアプリを部分的に置き換えていける
ものなのでしょうか?
それとも、新規Webアプリから採用するべきものなのでしょうか?




526 名前:nobodyさん mailto:sage [2009/01/29(木) 11:43:51 ID:???]
>>525
新規案件だけにしたほうが苦労が少なくていいと思う



527 名前:nobodyさん mailto:sage [2009/01/29(木) 11:51:59 ID:???]
>>525 思いついたところから書くと

最低クリアされるべき条件
・DBの構造(idとか)
・URL(/controller/action/param.. の形式)
がクリアされないといけない

そのうえで、Modelごと(≒tableごと)移行していくというのであれば、不可能ではないと思うが。

現実的には、DBを共通化して、Cakeによるサイトを作っていき、同時に稼働させてテストし、一気にリプレイスってことになりそうな気がするけど、どうなんだろうね。

ただ、Cakeに慣れるまである程度時間がかかるから、いずれにせよ新規アプリから始めないと、苦労すると思うよ。

528 名前:525 mailto:sage [2009/01/30(金) 06:58:44 ID:???]
>>526, 527
レスありがとうございました。
やはり新規案件からCakePHPをはじめたほうが無難ですね。
スキルを醸成してから、既存システムの変更を検討します。


529 名前:nobodyさん mailto:sage [2009/01/30(金) 11:51:03 ID:???]
自作クラスのインスタンスを得るにはどうすればいいの?

データを引数に持たせてインスタンス同士をいろいろ比較してくれるクラスを
昔作ったんだけどどう持ち込めばいいのかわからない

530 名前:nobodyさん mailto:sage [2009/01/30(金) 17:53:58 ID:???]
ポケットリファレンスを見てるんだが。
1.2になってModel::findが大幅に機能強化されたのに、
記述が少なすぎる。もしくは、Model::generateList()
のページに代わりの方法が書いてあればいいが、
Model::find()だけでは意味不明だろう。

531 名前:nobodyさん mailto:sage [2009/01/30(金) 18:27:52 ID:???]
>>530
おとなしく改訂版を待ってろ

532 名前:nobodyさん mailto:sage [2009/01/30(金) 18:55:05 ID:???]
改訂版って出るの?

533 名前:nobodyさん mailto:sage [2009/01/30(金) 19:21:00 ID:???]
コントローラから2つのモデルとデータをやり取りする場合、
アソシエーションを使う方がいいのか、
Controller::usesで直接指定する方がいいのか。

534 名前:nobodyさん mailto:sage [2009/01/30(金) 19:29:43 ID:???]
アソシエーション使うと結果変わる事ない?
たぶん親モデルと関連してるレコードしか該当しないよ

535 名前:nobodyさん mailto:sage [2009/01/30(金) 23:31:39 ID:???]
コントローラからコントローラへデータを渡すのって、どうするの?

536 名前:nobodyさん [2009/01/31(土) 01:44:15 ID:ZNZRtHpp]
flash



537 名前:nobodyさん mailto:sage [2009/01/31(土) 04:27:13 ID:???]
>>536
なるほど。
urlでパラメータを渡すなら、redirectでも良さそう。
でも、urlだと大きなデータは渡せないよね。
データが丸見えになるし。

あと、同じウィンドウの中でのみ渡すってなると、
どんな方法が良さそう?

538 名前:nobodyさん mailto:sage [2009/01/31(土) 04:30:59 ID:???]
>>537
まあなんだ。
ウェブアプリはデスクトップアプリと
考え方が違うが・・・
まあ、がんばれや。

539 名前:nobodyさん mailto:sage [2009/01/31(土) 05:48:56 ID:???]
Session->renew()で新しいsession_idを割り振れば
いけるかな?と思ったが、甘かった。同じブラウザでは
renewする前のが消える。
別のブラウザなら大丈夫だった。(当たり前か)


540 名前:nobodyさん mailto:sage [2009/01/31(土) 08:38:22 ID:???]
解決。セッションの使い方を間違ってる。
ユニークキーの発行が正しい。

541 名前:nobodyさん mailto:sage [2009/01/31(土) 09:18:36 ID:???]
Cakeユーザーの低レベルさが泣けてくる

542 名前:nobodyさん mailto:sage [2009/01/31(土) 09:28:15 ID:???]
>>541
今CakePHPが注目を集めている為、素人が「PHPフレームワークなら俺にも何か簡単に
Webアプリが作れるかな。」という気になっているじゃない?
見方を変えるとCakePHPの功績は大きいかも?

543 名前:nobodyさん mailto:sage [2009/01/31(土) 09:38:59 ID:???]
にしてもプログラマーと呼べないレベルの質問が多すぎる


544 名前:nobodyさん mailto:sage [2009/01/31(土) 09:47:48 ID:???]
そろそろsymfonyの時代か・・・?

545 名前:nobodyさん mailto:sage [2009/01/31(土) 10:44:44 ID:???]
それでも作れちゃうなら凄いこと

546 名前:nobodyさん mailto:sage [2009/01/31(土) 10:46:19 ID:???]
そんなレベルの人が正しくフレームワークを使いこなせてるとは思えない
保守不可能なシステムを作ってそう



547 名前:nobodyさん mailto:sage [2009/01/31(土) 11:16:37 ID:???]
Web屋と呼べないレベルではあるが
exe屋だったら最初そんなもんだろ。
まあ、フレームワーク知識自慢しかできないようじゃ、
お前らすぐに抜かれるよ。

548 名前:nobodyさん mailto:sage [2009/01/31(土) 13:50:46 ID:???]
>>529
自作クラスなんてコンポーネントにしちゃえばいいよ。
で、コントローラーで
$this->Myclass->eat('hoge');

で。

>>535
作り方としてデータを渡したいような内容のものがあるならモデルに書いた方がいい。
で、コントローラーからそのモデルのアクションを読み出してデータを取得。

549 名前:nobodyさん [2009/01/31(土) 16:13:14 ID:x6QrlarV]
authcompornentでユーザ登録した後、自動的にログイン状態に遷移する処理について
なにか方法があれば教えていただけませんでしょうか?

550 名前:nobodyさん mailto:sage [2009/01/31(土) 16:23:21 ID:???]
マニュアルを読め

551 名前:nobodyさん mailto:sage [2009/01/31(土) 17:40:26 ID:???]
データが全然こなくて小一時間悩んでたけどconditionsて書く所がconditonsになってた〜 時間返せー

552 名前:nobodyさん mailto:sage [2009/01/31(土) 17:50:06 ID:???]
色々読んでみたが、結局趣味でやるぶんにはイイFWってことか

553 名前:nobodyさん mailto:sage [2009/01/31(土) 18:44:40 ID:???]
>>551
あるあるwwww
JavaScriptでもundefinedとunidentifiedをよく間違えるんだよな

554 名前:nobodyさん mailto:sage [2009/01/31(土) 18:55:23 ID:???]
配列仕様だからそういうミスしても分からないんだよね
なにかあるたびに配列にミスが無いかチェックしてるわ

555 名前:nobodyさん mailto:sage [2009/01/31(土) 19:10:10 ID:???]
よく使うやつはテキストエディタの強調表示設定に入れておくのが吉

556 名前:nobodyさん mailto:sage [2009/01/31(土) 19:38:57 ID:???]
symfonyを採用したオープンソースのSNS OpenPNE3.0が1/27にリリースされたそうな。
ttp://www.openpne.jp/archives/1117/
と言う事は、OpenPNE3.0はPHP4のサーバにはインストール出来ないと言うことか?
多くのアプリがPHP4で開発されたもので、PHP5での稼働が保証されていないので、
サーバのPHPを5に出来ないんだよな。



557 名前:nobodyさん mailto:sage [2009/01/31(土) 21:24:40 ID:???]
>>548
モデル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)ってするつもりだった。
だけど、このやり方って変?

558 名前:nobodyさん mailto:sage [2009/01/31(土) 21:53:45 ID:???]
>>557
ゆとりなの?死ぬの?

こんな風に 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


559 名前:nobodyさん mailto:sage [2009/01/31(土) 23:42:40 ID:???]
コントローラーから別のコントローラーに値を渡す方法と言われて、セッションとかそういう話じゃなかったことしかないな

560 名前:nobodyさん mailto:sage [2009/02/01(日) 01:12:20 ID:???]
質問です。

$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つめのデータが表示されません。何が原因なのでしょうか?

561 名前:560 mailto:sage [2009/02/01(日) 01:26:07 ID:???]
すみません、追記です。
PHPのバージョンは5.2.8、CakePHPのバージョンは1.2.1.8004です。

あと「array('id' => 1, 'name' => 'piyo'),」は、
「array('id' => 1, 'title' => 'hoge'),」とした方が自然ですね。


よろしくお願いします。

562 名前:nobodyさん mailto:sage [2009/02/01(日) 22:33:35 ID:???]
>>560
よくわからんけど。
Tagの添字のID=1が二つあるからじゃね?
それ以外の条件での検索については、エラーは出ないし。


563 名前:nobodyさん mailto:sage [2009/02/01(日) 22:46:30 ID:???]
ちょっと複雑?なアソシエーションについて教えて。
基本は A hasMany B , B belongTo A なんだけど、
AとBは hasAndBelongToMany でもある。
(Aが担当教員で、Bが生徒と思えば。
Aの中に担任が一人居るような感じ。)
belongTo のAと、hasAndBelongToManyのAsを
どうやって取得し分けたらいい?


564 名前:nobodyさん mailto:sage [2009/02/02(月) 01:23:57 ID:???]
>>563
アソシエーションのbindとunbindを使い分ければいいんじゃない?

565 名前:nobodyさん [2009/02/02(月) 05:46:05 ID:lBmCzdKa]
1.2でpaginatorを1画面に複数使う方法が書いてあった
blog、どこにあったか知ってるひといたら教えてプリーズ

あとで見ようとしててどっかにいってしまいました

566 名前:563 mailto:sage [2009/02/02(月) 15:51:42 ID:???]
>>564
一方を取得したくない時には、それでいけそうです。ありがとう。

だけど逆に、両方取得したい時に困りました。
当たり前かもしれませんが、両方が同じ変数に混ざってしまいます。

[B] => Array
(
[id] => 1
[name] => hoge
[0] => Array
(
[id] => 1
[name] => hoge
[AsB] => Array
(
[id] => 4
[A_id] => 1
[B_id] => 1
)
)
)
これ、どうやって分離する?
もしくは、別々の変数でとり出す方法は?
それとも、そもそもデータベースの設計がおかしい?



567 名前:nobodyさん mailto:sage [2009/02/02(月) 16:28:39 ID:???]
>>566
良くのみこめてないけど、tableに問題がありそうなきがする
teachers , students があるのかな?
classes があればすべて解決するような気がするけど違うのかい?

568 名前:563 mailto:sage [2009/02/02(月) 19:05:21 ID:???]
Authも兼ねるつもりなので、 A hasMany B のAはusersなのです。
だからgroupsも作ってあるけど、classesやgroupsのいずれでも
B blongsTo〜の関係にならないのです。


569 名前:nobodyさん mailto:sage [2009/02/02(月) 19:06:34 ID:???]
www.google.co.jp/trends?q=cakephp%2Cruby+on+rails&ctab=0&geo=all&geor=all&date=all&sort=0

逆転しそう

570 名前:nobodyさん mailto:sage [2009/02/02(月) 19:55:59 ID:???]
>>568
いやいやそういうこっちゃないでしょ

もっと具体的に書いてみたらどうよ。
「A hasMany B , B belongTo A なんだけど、 AとBは hasAndBelongToMany でもある」って言われてもねえ
関係するModelと、そこで使われているアソシエーションの内容を、具体的にたのむ

571 名前:nobodyさん mailto:sage [2009/02/02(月) 20:48:11 ID:???]
>>569
これってGoogleでの検索件数のトレンドグラフだよねえ。
CakePHPは色々と問題が多くて、その解決法を探す為にみんなせってと「CakePHP」
キーワードで検索をしている。だから最近検索件数がウナギ登りなんだ。
と言う見方もあるのかなあ?世間の注目を集める為のCakePHPの戦略では?

572 名前:nobodyさん mailto:sage [2009/02/02(月) 21:19:08 ID:???]
>>566
必要なデータを得られるfindをして、自前で工夫すればいいんじゃないかな

573 名前:563 mailto:sage [2009/02/02(月) 21:22:19 ID:???]
usersテーブル
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));


574 名前:563 mailto:sage [2009/02/02(月) 21:23:10 ID:???]
Personsコントローラ
class PersonsController extends AppController {
function view($id = null) {
$this->set('person', $this->Person->read(null, $id));
debug($this->Person->read(null, $id));
}
}

すると、$person['User']に、>566みたいに、belognsToとhasAndBelongsToManyの
両方のデータが入ってしまう。
['User'][id]
['User'][name]とかは、blongsToのデータ
['User'][0][id]
['User'][0][name]とかはhasAndBelongsToManyのデータだと思う。


575 名前:nobodyさん mailto:sage [2009/02/02(月) 22:34:43 ID:???]

var $hasMany = array('Profile1' =>
array('className' => 'Profile',
'foreignKey' => 'user_id',
),
'Profile2' =>
array('className' => 'Profile',
'foreignKey' => 'user_id',
)
);

576 名前:563 mailto:sage [2009/02/02(月) 22:56:48 ID:???]
>>575
それだ!!うまくいきました!多謝多謝



577 名前:nobodyさん mailto:sage [2009/02/03(火) 09:54:32 ID:???]
モデル間のデータのやり取りや、
一つのモデルで複数のフィールドの
データを操作するのって、どうやるの?
というか、そういうのは奨められない?

あるフィールドにデータが書き込まれたら、
同時に別のフィールドにもデータを書き込みたい。
(DBの設計がそもそも冗長との批判は分かる。)

578 名前:nobodyさん mailto:sage [2009/02/03(火) 10:15:42 ID:???]
>>577
afterSave , afterDelete






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<152KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef