使用 CakePHP 版本:2.3.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'] 的请求,我检查默认数据库(客户端),检查密码,检索名称,在本例中为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)
数据源默认为“默认”,我收到一个错误:在数据源默认中找不到模型学生
的表学生
如何通过控制器动态更改所有模型的默认数据源(不是一一)?