RSS

ひとつのテーブルに同一テーブルのキー情報が入る場合

12 9月

メモ。っていうか解決してない!うーん;
・CakePHP 1.2.4.8284.
・収支関連のテーブルを作成した。
→AccountRecordというモデル。
そこには登録したユーザーのID、などなどと合わせて

・送金先の銀行のID(bank_id)
・送金元の銀行のID(from_bank_id)をもたせて以下のようにモデルにアソシエーションを設定。

var $belongsTo = array(
"Bank",
"User",
"Item",
'from_Bank' =>array('className' => 'Bank','foreignKey' => 'from_bank_id'),
'to_Bank' =>array('className' => 'Bank','foreignKey' => 'bank_id'),
);

で、だ。編集画面も自作しようと思い、bakeしたソースの一部を参考にして
編集画面に
・送金先銀行
・送金元銀行
のドロップダウンリストを作成し、各自変更させるようにしたい、と思ったので
コントローラーに

$banks = $this->AccountRecord->to_Bank->find('list');
$this->set(compact('banks'));

このような記述をし、view(edit.ctp)では

echo $form->input('bank_id');

このように表示させてみた。(ドロップダウンリストが表示され、bank_idが選択されるようになった)

で、今度は送金元のデータだ、と思いそこではたと考えてしまった。
送金元も当然だけど、

echo $form->input('from_bank_id');

だけで動くとおもったら、動かない。というか、値は数字で表示されるがドロップダウンリストにならない。
どうやら送金先の時に処理した

$banks = $this->AccountRecord->to_Bank->find('list');
$this->set(compact('banks'));

これと同じような記述をコントローラーにしないといけないのだが、$banksの変数名をどうしていいのかわからない。
だって同じリストのデータだし…それ参照してほしいんだけど、と思って2時間ほど格闘した挙句、

<span style="color:#ff0000;">$from_banks</span> = $this->AccountRecord->from_Bank->find('list');
$this->set(compact('from_banks'));

このようにしたら、動作した。上記で動いた場合、送金先の箇所は

$banks = $this->AccountRecord->to_Bank->find('list');  ではなく
<span style="color:#ff0000;">$to_banks </span>= $this->AccountRecord->to_Bank->find('list'); 

じゃないのかと思うわけだが、どうやらこれでは動作しないようで…。

編集画面のモデルの操作がいまいち理解できていないこと、いないこと。
viewにはbanks なんていう変数はまったく使ってないのにコントローラーで何かが行われているらしい、ということしかわからん!
ガイドブックには同じようなことをしている箇所がないので(そもそも編集画面の描画っていうセクションが少ない)、わからねえ!
ということで動いてるけど、なんていうか「まぐれ」とか「たまたま」感を感じてしょうがないのでメモ。解決したらまたエントリ書くわ。

編集画面を詳細にレクチャしてるページみっつけないとだめぽ…。

広告
 
コメントする

投稿者: : 9月 12, 2009 投稿先 Uncategorized

 

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

 
%d人のブロガーが「いいね」をつけました。