質問: CakePHPで、学年ごとに編集画面を分岐させるページを作りたいと考えております。 例: Aさん→first_grades (1学年のテーブルに所属) Bさん→second_grades (2学年のテーブルに所属) 〜gradesのテーブルにそれぞれがいます。 それぞれの学年ごとにリストを表示させ、各レコードの最後に「詳細」リンクを付けて推移させ、そこでは学年のテーブルのカラム全ての内容を表示させ、その人の登録内容を編集させたいと考えております。 student/index.ctpで一覧→student/edit.ctpで編集という感じです。 コントローラー(StudentController.php)、モデル(student.php)は1つのもので行おうと考えております。 また、テーブルは生徒一覧テーブルは無く、学年ごとのテーブルをモデルのSQLにUNIONで繋げて一覧を作成しています。 (前に情報を少しかじっていた人が作って、index画面だけ作り、そのままにしてしまったので、現状のまま作成したいと考えております。) 環境はMySQL 5系、CakePHP 2系、PHPが5.7だったと思います。 そこで質問があります。 1. 1つのコントローラーで、複数のテーブルを扱う場合、コントローラーにusesで使用するテーブル名を書くというのを学びましたが、それ以外にやるべき事はあるのでしょうか。 2. 一覧部分の各レコードにある「詳細」を押した時に、学年のテーブルを特定させて、そこに推移させたいと考えております。 その場合、読み込みをさせる場合はどのような記述を書いてあげるべきなのでしょうか。 一覧からは、idと学年(1、2など)で推移させたいと思います。 3. それを登録させる時についてですが、登録させる時の記述は、コントローラーとテーブル名が全く違う場合はどのようにすればよろしいでしょうか。 コントローラー、モデル、テーブル名が今までは同じものしか扱ったことが無く、どのように作るべきかわからずにおります。 出先の為曖昧な質問となってしまい、申し訳ありませんが、ご教授いただけないでしょうか。よろしくお願いいたします。
回答: 現状のまま作成したいとのことですが、やはり、生徒を students テーブル1つにまとめるのが、結局一番近道だと思います。 students テーブルさえあれば、ある程度まではBakeでコード生成できます。 学年毎のテーブルのままですと、今後、学年が変わる度に全レコードをテーブル間で移動しなければいけなくなり、データもプログラムもメンテナンスしずらくなりそうです。