【PHP】フレームワーク CakePHP 9ホール目【v1.3】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/07/23(金) 09:13:26ID:v3m09M9uCakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※sage推奨
※質問時もsageること
※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
0082nobodyさん
2010/07/30(金) 10:01:28ID:???008378
2010/07/30(金) 12:28:39ID:E2f+bC/4おー、まさにこれですね。ありがとうございます。
他にも使えそうなのがありますね > setクラス
0084nobodyさん
2010/07/30(金) 12:32:10ID:???Set::combine
Set::extract
あたりは結構常用してる
0086nobodyさん
2010/07/30(金) 18:30:15ID:???下記のようにあるコントローラに別のコントローラを継承させています。
App::import('Controller','Base');
class TestController extends BaseController {
Testというページは情報入力画面なのですが、
最初の画面は表示されるのにサブミットボタンを押した後真っ白な画面になってしまいます。
phpのエラーはなくdebug.logにも何も出力されておりません。
継承ではフォームの作成は出来ないのでしょうか。
あいまいな質問ですみません。
何かヒントでもつかめればと思います。
0087nobodyさん
2010/07/30(金) 18:47:58ID:???TestControllerとTest2Controllerというコントローラがあり
処理も全く同じでファイルパスだけが違うます。
これまで処理が全く同じでパスだけ違う場合
シンボリックリンクを張りファイル名だけ変えていたのですが
cakeの場合クラス名が変わるのでそれが使えません。
同じ処理を行うファイルを複数使用する場合
効率のいいやり方はありますか?
0089nobodyさん
2010/07/30(金) 19:14:56ID:???SecurityComponentを外したら確かにアクセス出来るようになりました
どうもありがとうございます!
0090nobodyさん
2010/07/30(金) 19:24:07ID:???答えたくもないわ
0092nobodyさん
2010/07/30(金) 22:55:32ID:???URLにプラグインが保管されてしまうんですがこんな仕様でしたっけ?
$html->link(array(....));のときにプラグイン名を明示的に
'plugin'=>nullってしてやらないとこれもプラグインが勝手に保管されるので同じように
form->create()の第二引数で指定してやってもダメでした。
なんか他のところに原因があるんでしょうか
009392
2010/07/30(金) 23:05:23ID:???で、どーもそういう仕様っぽいなってことで、以下のようにしました。
<?php echo $form->create('Member', array('url'=>array('plugin'=>null, 'controller'=>'members', 'action'=>'login')));?>
memberを2個かくのに抵抗感汁んですがまぁいいや。
0094nobodyさん
2010/07/31(土) 07:39:26ID:???それならpluginをnullしなきゃいけないのは当然よ
0095nobodyさん
2010/08/01(日) 00:23:04ID:???んで、html->link()の時はplugin=null入れなきゃってのは前からやってたんですが、
formのケースが自分でかってに
plugin=nullなんて指定しなくても第一引数がPlugin.Memberとかでない限り大丈夫だと思ってたんです。
でもそうじゃなかったと。
サーセン
0096nobodyさん
2010/08/01(日) 08:44:34ID:???基本的に現在のURLを残そうとするからね
0097nobodyさん
2010/08/01(日) 09:04:08ID:???0098nobodyさん
2010/08/02(月) 12:35:29ID:n6/Fh0gL知恵をお貸しくだされ
入力任意の日付項目があって
viewで
$form->input('A',array('type'=>'date','empty'=>'','selected'=>'' ・・・
ってしたときに
modelでvalidateを下記のように設定する
'A' => array(
'rule' => array(
'allowEmpty' => true,
'message' => '正しい日付を選択して下さい'
)
),
で設定すると入力フォームで年月日を全部選択しないとmodelで値が
取れないからどうしたらいいか迷ってる。
一番簡単な方法は'type'=>'date'を使わないで
年月日を別々に作っちゃうことだけど
それ以外の方法でなにかないかな?
0099nobodyさん
2010/08/02(月) 12:53:48ID:???超簡単にかけるでしょ
0100nobodyさん
2010/08/02(月) 13:48:24ID:???findのconditionで指定した場合(例えば $condritions=array('xxx'=>'aaa')など)
「Column 'xxx' in where clause is ambiguous」
というエラーが発生します。
$condritions=array('(テーブル名).xxx'=>'aaa')
というようにテーブル名を条件指定のときに付与すれば回避できるのですが、
テーブル名を直接記述するのもフレームワーク的にしっくりきません。
他にこのエラーの回避方法などありますでしょうか?
0101nobodyさん
2010/08/02(月) 13:51:18ID:n6/Fh0gL99さん返信ありがとです
98ですが、独自ルールの前に値がmodelでは取れないので困っているんです
viewでは取れているのですが^^;;;
具体的には
'A' => array(
'rule' => 'validateData',
'message' => '正しい日付を選択して下さい'
),
##データValidate関数
##$this->data[$this->name][$key]['year']と
##$this->data[$this->name][$key]['month']と
##$this->data[$this->name][$key]['day']がとれない;;
##'A'というkeyで値が取れている。ひとつでも選択されてないと値が空白になる
##という理由で独自に作ってもだめです><
function validateData($field=array()) {
foreach($field as $key => $val){
if($key=='A'){
if(!empty($this->data[$this->name][$key]['year']) && !empty($this->data[$this->name]['month']) && !empty($this->data[$this->name]['day'])){
return checkdate($this->data[$this->name]['month'],$this->data[$this->name]['day'],$this->data[$this->name]['year']);
}else if(empty($this->data[$this->name]['year']) && empty($this->data[$this->name]['month']) && empty($this->data[$this->name]['day'])){
return true;
}else{
return false;
}
}
}
return true;
}
0103nobodyさん
2010/08/02(月) 14:05:01ID:???http://book.cakephp.org/ja/view/1018/find
のソースをよーく見てね
0104100
2010/08/02(月) 14:10:02ID:???ありがとうございました。
conditionsの指定はカラム名だけでOKなものと思い込んでいました。。。
モデル名の付与がそもそも正しいんですね。
0106nobodyさん
2010/08/02(月) 14:39:32ID:???yearだけ入力されて送信されても、ほかが空っぽだと、何も入ってないってこと?
$this->data[$this->name]['year']じゃなくて
$this->data[$this->name]とかにYYYY-MM-DDな感じに加工されたテキストで入ってなかったっけ?
0107nobodyさん
2010/08/02(月) 14:54:10ID:???$form->input('A',array('empty' => array('00'=>'--'),'selected' => '' ,
emptyオプションに配列を入れてVALUEを設定しました。
これで一応解決しました
本当は年月日別々にemptyを設定しようかと思ったんですが
書き方がわからなかった&時間がなかったという理由で上記で
一応解決とさせていただきました。
以下返信してくれた方へのレス
>>102
書き込むのは初めてだったのですまん。
たぶんこれで下がっていると思われ
>>105
debugger::dump($field);
結果はNULLが入った;;
array(
"A" => null
)
>>106
そうです。
$this->data[$this->name]がNULLになっちゃうんです
0108nobodyさん
2010/08/02(月) 22:28:51ID:???エラーメッセージ読もうよ。。。
「Column 'xxx' in where clause is ambiguous」
0109Beginner
2010/08/02(月) 22:44:27ID:???ThreadモデルとResponseモデルがあり、
◆Threadテーブル
・id int
・title text
・created datetime
・modifired datetime
◆Responseテーブル
・id int
・thread_id int
・comment text
・created datetime
・modifired datetime
Thread hasMany Response、Response belongsTo Threadになっています。
0110Beginner
2010/08/02(月) 22:45:34ID:???Responseテーブルの件数(10件)毎にpaginateを実行したいと思っています。
イメージとしては、
[1][2][3][4][5](ページング)
-------------------------------
スレッド1:
-------------------------------
1 名前: Aさん 投稿日: 2010/07/23(金) 09:13:26
hogehoge1
piyopiyo1
2 名前: Bさん 投稿日: 2010/07/23(金) 09:13:26
hogehoge2
piyopiyo2
-------------------------------
[1][2][3][4][5](ページング)
こんな感じです。
Containableビヘビアを使用して、データを取得しています。(findではデータの取得が出来ました)
でもpaginateが出来ません。
どのようにすれば出来るでしょうか?
以下のような方法しかないのでしょうか?
http://book.cakephp.org/ja/view/249/
4.9.4 カスタムしたクエリによるページ付け
0111nobodyさん
2010/08/03(火) 00:28:24ID:???paginateの条件指定の周りはどう書いてるの?
$this->paginate('Response')
でいけると思うんだけど。
0113nobodyさん
2010/08/04(水) 11:55:21ID:???http://jbbs.livedoor.jp/bbs/read.cgi/internet/6235/1265358917/
0114nobodyさん
2010/08/04(水) 23:13:48ID:???http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=447&forum=3
この辺とかで既出だけど、パラメータにプラス記号が入っていても上手く処理できないというのは既出?
たとえば/hoge+fugaにアクセスすると/hoge fugaとか/hoge%20fugaと同じ扱いになっちゃう
たぶんhtaccessでURL自体をindex.php?url=に渡してGETパラメーター扱いにしてるから
+がスペースと同じになっちゃうと思うんだけど・・・
とりあえず二重エンコードで回避してみたけど、あまりいい手段とも思えない。
何か他に回避策はないかな?
0115nobodyさん
2010/08/04(水) 23:18:29ID:???二回エンコードすると+がそのままパラメーターとして渡る
0116nobodyさん
2010/08/04(水) 23:37:01ID:???rawurlencodeで解決するかと思いきや、ダメっぽい
$_SERVER['REDIRECT_QUERY_STRING'];
$_SERVER['REDIRECT_URL'];
$_SERVER['REQUEST_URI'];
とかから持って来ちゃったら?とも書いてある
http://osdir.com/ml/CakePHP/2009-01/msg00954.html
http://groups.google.com/group/cake-php/browse_thread/thread/23d82b527476c8cf
0117nobodyさん
2010/08/05(木) 02:26:48ID:???symfonyとかrailsはどうなってるんだろう・・・?
0118nobodyさん
2010/08/05(木) 03:16:57ID:???http://d.hatena.ne.jp/ruby-U/20090618/1245332725
このあたりのhtaccessのmod_rewriteで勝手にパラメーターがデコードされてるのが原因なのかな
0119nobodyさん
2010/08/05(木) 03:30:02ID:???1. /hoge hoge -> hoge hoge
2. /hoge%20hoge -> hoge hoge (スペースをエンコード)
3. /hoge+hoge -> hoge hoge
4. /hoge%2Bhoge -> hoge hoge (+をエンコード)
5. /hoge%252Bhoge -> hoge+hoge (+を二回エンコード)
挙動としておかしいのは4と5で、それぞれ本来はhoge+hogeとhoge%2Bhogeが得られるはずなんだよな
一回余計にデコードされてる
0120118,119
2010/08/05(木) 16:02:35ID:nxLYetG6index.phpに渡った時点で>>119のデコードが確認できた
なので、これはcakeの問題と言うより>>118に書いたようにhtaccessの仕様のようだね
1. 最初にapacheがデコードして、mod_rewriteで/index.php?url=hoge+hogeとして解釈される
2. GETパラメーターでは+はスペースの代わりに使われるので、$_GET['url']の中身はhoge hogeになる
さらに/について
%2Fをパラメーターとして渡すと区切り文字として扱われてしまうのは>>114にも書かれているとおり
1. /hoge/hoge/hoge
2. /hoge/hoge%2Fhoge (1回エンコード)
3. /hoge/hoge%252Fhoge (2回エンコード)
のすべてのパターンで$_GET['url']の中身がhoge/hoge/hogeになってしまう
hoge/hoge%2Fhogeとして受け取りたい場合には
4. /hoge/hoge%25252Fhoge
と3回エンコードしないといけない
ちなみにallowEncodedSlashesがonじゃない場合は2は404になるけど、1
0121nobodyさん
2010/08/05(木) 16:07:11ID:???ちなみにallowEncodedSlashesがonじゃない場合は2は404になるけど、1、3、4の挙動は同じ
これらに関してスマートな解決方法は思いつかないので、誰か他の人にパス
0122nobodyさん
2010/08/08(日) 18:03:07ID:???0123nobodyさん
2010/08/08(日) 18:11:12ID:???0124nobodyさん
2010/08/08(日) 19:11:13ID:???0125nobodyさん
2010/08/08(日) 22:19:24ID:???まったく話題にならないけど、このバグで困っている人いないの?
0126nobodyさん
2010/08/08(日) 22:47:28ID:???windows7上で開発してる人は少ないだろうし、fopenも滅多に使わないだろうから、
あんまり遭遇する人がいないんじゃない
0127nobodyさん
2010/08/08(日) 22:58:49ID:???0128nobodyさん
2010/08/08(日) 23:35:31ID:???Vistaでもエラーでるんだよ
fopenはキャッシュ読み込む時に使われているから、キャッシュの機能を意図的にオフに
しないかぎり、勝手に呼び出されるよ
本番環境はlinuxだから、linuxで発生しないって確証があれば気にはしないんだけどさ
0129nobodyさん
2010/08/08(日) 23:54:58ID:???0130122
2010/08/09(月) 00:18:49ID:???fixtureにAテストのためにテストデータ追加すると、Bテストではエラーがでる、つまり
データの整合性をfixture上で取るのが面倒だが、みんなどうやっているのかなと。
0131nobodyさん
2010/08/09(月) 00:26:35ID:???本番環境では今のとこエラーは出てないよ
でも、それがlinuxではエラーが出ないって保証にはならんでしょ?
原因が特定されないと気持ち悪い
0133nobodyさん
2010/08/09(月) 04:02:03ID:???0134nobodyさん
2010/08/11(水) 23:32:47ID:???http://blog.livedoor.jp/loopus/archives/50214076.html
ここで
>$data = $this->Uriage->findAll(('1 = 1 group by customer_id', 'customer_id, sum(price) as "Uriage.sum_price"')
>
>という書き方をすると
>
>$data[x]['Uriage']['customer_id']
>$data[x]['Uriage']['sum_price']
>
>とキレイに入ってくれる。
というやり方が書かれているのですが、1.3だと as "Uriage.sum_price"とするとSQLエラーが出てしまいます
0135nobodyさん
2010/08/12(木) 09:45:53ID:???よめ
http://book.cakephp.org/ja/view/1608/Virtual-fields
0136nobodyさん
2010/08/12(木) 10:21:52ID:???うちで使っている糞鯖にファイルアップするだけでも、だいぶ時間がかかる
0138nobodyさん
2010/08/12(木) 14:49:01ID:???フォークして、自前でカスタマイズする。
もしくは、もうやっているとともうけど、lnしてひとつにまとめておく…とか。
0139nobodyさん
2010/08/13(金) 00:02:04ID:???固めてあげろ
0140nobodyさん
2010/08/13(金) 05:51:38ID:tji6Fsyn配布されている絵文字のライブラリを使おうと思っています。
こういう「DB使わないし、一部PHPのライブラリを使うだけ」
と言った状態でも、Cakeを使う事で幸せになれるでしょうか?
0141nobodyさん
2010/08/13(金) 06:27:42ID:???いいえって返ってくれば使わないでおこうと思ってたんなら、
君には恩恵は少ないと思うから使わなくていいと思う。
0142nobodyさん
2010/08/13(金) 06:40:41ID:???人それぞれなんて言ったら、すべて人それぞれで終わりだろ。
0143nobodyさん
2010/08/13(金) 08:56:35ID:???0144nobodyさん
2010/08/13(金) 10:06:54ID:???0145nobodyさん
2010/08/13(金) 10:54:57ID:???どんな要件にも人それぞれって回答したら済む。
0147nobodyさん
2010/08/13(金) 11:44:43ID:???0149nobodyさん
2010/08/13(金) 11:48:59ID:???0150nobodyさん
2010/08/13(金) 12:21:38ID:???くだらないレスするくらいなら、ちゃんと質問に答えてやれよ
>>140
Cake専用の絵文字ライブラリなんてあったっけ?
Ktai Library for CakePHPなら単体でも動作したはずだよ
0152nobodyさん
2010/08/13(金) 12:33:28ID:???0153nobodyさん
2010/08/13(金) 12:41:08ID:???「人それぞれ」って回答が一番糞だろ。無駄レス以下だ
0154nobodyさん
2010/08/13(金) 12:49:51ID:???知らないんじゃなくて、人それぞれとしか言いようがないっていうことでしょ
>>140が人それぞれじゃないと思うのなら、自分で>>140にレスすればいい
他に誰も>>140に答えられなかったら「人それぞれ」が正解になるだけ
0155nobodyさん
2010/08/13(金) 12:56:33ID:???いや、普通に>>150が答えてるじゃん。
俺でも「一部だけ使うならフレームワーク使わなくても良いんじゃないか?」
って書くな。
で、そう思ってスレ見たら>>141とかふざけたこと
書いてあったから気になっただけだ。これ言ったらどうしようもねーだろ
0157nobodyさん
2010/08/13(金) 12:59:41ID:???どこがどう「ふざけた回答じゃない」だ?何も解決できないじゃん。
「昼飯何食えばいい?」って質問に「好きな物食えばいいよ」って答えるようなもん。
0158nobodyさん
2010/08/13(金) 13:01:49ID:???エスパーじゃないんだから、あなたにはこれとこれとあとこれも有用です。
したがってCakePHPを使いなさいって答えられないよ
0159nobodyさん
2010/08/13(金) 13:03:50ID:???俺は>>136を書いたけど、適当につぶやいたつもりが
普通にレスしてくれてたし。で、意見書こうと思ったらこれだ。
単に>>141は天の邪鬼なだけだろ。
0160nobodyさん
2010/08/13(金) 13:03:53ID:???おいおいwww
「昼飯何食えばいい?」
実にどうでもいい質問だな。それこそ人それぞれでおk
お前はなんて答えてあげるんだい?ww
0162nobodyさん
2010/08/13(金) 13:09:36ID:???ちょとおちつけよ
>>140の質問者はKtai Libraryなんて一言も書いてないぞ。
それでなんで「一部だけ使うならフレームワーク使わなくても良いんじゃないか?」
の回答に直結するんだ?CakePHP用に作られたプラグインやらライブラリが
すべてCakephpなしに動くなら君は正しいよ。そうじゃないだろ?
それとも何か?回答者はわざわざ行間読んでKtai Libraryにたどり着き回答する必要があるのか?
求めすぎだろ。頭ひやせ
携帯サイト用のライブラリーやプラグインはいくつかあるんだぞ
0163nobodyさん
2010/08/13(金) 13:10:51ID:???0164nobodyさん
2010/08/13(金) 13:11:35ID:???待て待て。Ktai Library云々の話を持ち出すまでもなく
「一部で使うだけなら、CakePHPの恩恵が得られない」
と言う意味での>>155は別におかしくねーだろ。
逆におかしいと思ってもお前が判断するような事じゃねーよ
0165nobodyさん
2010/08/13(金) 13:13:28ID:???0167nobodyさん
2010/08/13(金) 13:15:24ID:???0169nobodyさん
2010/08/13(金) 13:21:40ID:???0170nobodyさん
2010/08/13(金) 13:43:23ID:???期待する回答がもらえなかったら、もうちょっと詳しく
事例の説明をして、もう一回回答をもらおうとするのが
普通の質問者のスタイルじゃないか?
それを一回自分の期待する回答が得られなかったからといって
あまのじゃくだの何だの言うのなんて、質問者の立場が
わかってないとしか思えない
俺なんて質問してもレスさえもつかなくて、自分で
他人のふりして回答を書き込むのがしょっちゅうなんだぞ
見ず知らずの他人が金ももらわずに回答するんだから、
レスがついただけでもありがたく思わなきゃ
0172nobodyさん
2010/08/13(金) 15:27:44ID:???適当にテーブル作ってbakeしたら、それだけでそこそこのサイトは完成する
0173☆忍者Perl☆ ◆M5ZWRnXOj6
2010/08/13(金) 23:36:15ID:LkLBXJmk頭湧いてるバカばっかりwwwwwwwwwwwww
(笑)(笑)(笑)(笑)(笑)(笑)(笑)
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
だからなめられんだよクソwwwwwwwwwwwwwwwwwwwwww
0174nobodyさん
2010/08/14(土) 00:23:57ID:???PHPerって半数くらいはPerlもできるだろ
0175nobodyさん
2010/08/14(土) 01:17:12ID:???3テーブルあります。
購入履歴(Histories)テーブル:id、fruit_id、user_id
果物(Fruits)テーブル:id、producer_id
生産者(Producers)テーブル:id、rank(A、B、C、D・・・)
下記のようなbelongsToの設定をモデルにしてあります
(要するに多階層のbelongsToです)
History:belongsTo=Fruits
Fruit:belongsTo=Producer
recursive=2でHistoryモデルからfindする際、
「Producer.rank='B'」
を条件に指定したのですが、belongsToで下位の階層のカラムを条件に指定することは
可能なのでしょうか?
上記条件を指定すると「Unknown column」となります。
なお条件を指定しない場合、きちんと2階層目までのデータは取得できています。
0176nobodyさん
2010/08/14(土) 01:36:15ID:???条件指定してない時には正しくデータがとれてると言うことは
アソシエーション自体は正しいから、conditionsが間違ってるっぽいな
発行したSQL文かconditionsの内容書いてみ
0177175
2010/08/14(土) 02:04:35ID:???1.SELECT `History`.`id`, `History`.`fruit_id`, `History`.`user_id`, `Fruit`.`id`, `Fruit`.`producer_id` FROM `histories` AS `History` LEFT JOIN `fruits` AS `Fruit` ON (`History`.`fruit_id` = `Fruit`.`id`) WHERE 1 = 1
2.SELECT `Fruit`.`id`, `Fruit`.`producer_id` FROM `fruits` AS `Fruit` WHERE `Fruit`.`id` = 1
3.SELECT `Producer`.`id`, `Producer`.`rank` FROM `producers` AS `Producer` WHERE `Producer`.`id` = 1
4.SELECT `Fruit`.`id`, `Fruit`.`producer_id` FROM `fruits` AS `Fruit` WHERE `Fruit`.`id` = 2
5.SELECT `Producer`.`id`, `Producer`.`rank` FROM `producers` AS `Producer` WHERE `Producer`.`id` = 2
結果は
Array(
[0] => Array(
[History] => Array(
[id] => 1
[fruit_id] => 1
[user_id] => 1)
[Fruit] => Array(
[id] => 1
[producer_id] => 1
[Producer] => Array(
[id] => 1
[rank] => A)))
[1] => Array(
[History] => Array(
[id] => 2
[fruit_id] => 2
[user_id] => 1)
[Fruit] => Array(
[id] => 2
[producer_id] => 2
[Producer] => Array(
[id] => 2
[rank] => B))))
0178175
2010/08/14(土) 02:06:46ID:???多階層のJOIN文を作成して1度でデータを取得していると思っていたのですが、
1階層目までしかJOINせず、その先は個別にデータを取得してるみたいです。
このような分割をされると、下位の階層のカラムを条件で指定するのは無理ですね・・・。
0179175
2010/08/14(土) 02:07:50ID:???0180176
2010/08/14(土) 03:18:02ID:???belongsToでも2階層先はSQL分割されちゃうのか
なんなら
Fruit hasMany History
Fruit belongsTo Producer
にして
$this->Fruit->find('all', array('conditions'=>array('Producer.rank'=>'B')))
とかにしたらどうかね
ちょっと酒入っているので自信がないが
0181175
2010/08/14(土) 03:51:18ID:???ありがとうございます。
今回例に出したのは2階層なんですが、実は4階層のケースでどうしようか悩んでいるのです・・・。
ちなみにお教え頂いた
「特定のモデルを中心に、hasManyとbelongsToを使って上下1階層(合計2階層)を取得する」
方法は成功しました(SQLは2文、条件指定も可)。2階層までならこの方法でいけますね。
今回のような2階層以上のデータの芋づる取得はそんなに多いケースではないので、
とりあえずMySQL上に多段JOINしたViewを定義して、そのView用のmodelを使用しようと思います。
■ このスレッドは過去ログ倉庫に格納されています