CakePHP バージョンの使用: 2.3.1
承認に使用するデフォルトのデータベースがあり、それに基づいて、クライアントごとに異なるデータベースが作成されます (データベース名にはクライアント名が含まれています)。
私はそれらの間のさまざまな関係を持つ多くのモデルを持っています。1 回の呼び出し (関連するすべてのモデル データを再帰的に取得する) を使用してそれらを取得したいと考えています。
シナリオ:
データベース
default :
clients
[id, password, name]
[1, 'qwertycolemak', 'amazon']
[2, '5t4ck0verfl0w', 'ebay']
デフォルト以外のデータベース (次の 2)
client_amazon
students[student_id, student_name]
course_students [student_id, course_id]
courses [course_id, course_name]
client_ebay
(same as client_amazon)
ここで、[id:2, password:'5t4ck0verfl0w'] のリクエストを受け取ったとします。デフォルトのデータベース ( clients ) を確認し、パスワードを確認し、名前を取得します。この場合はebayです。
今、アクセスしたいデータベースは「client_ebay」です
各クライアントに対応する database.php に異なる構成があります。を使用してデータソースを変更してみました
$this->student->setDatasource('client_ebay')
$this->course->setDatasource('client_ebay')
$this->course_student->setDatasource('client_ebay')
これは、モデルへの個々の CRUD 呼び出し (非再帰的) で機能します。
しかし、(再帰をオンにして)呼び出しを使用すると
$this->student->findById(5)
データソースのデフォルトは「デフォルト」で、エラーが発生します:モデル学生
のテーブル学生がデータソースのデフォルトで見つかりませんでした
コントローラーを介してすべてのモデル (1 つずつではなく) のデフォルトのデータソースを動的に変更するにはどうすればよいですか?