我曾搜索解決方案,但沒有發現任何幫助。 This問題是關於在數據映射器中使用多個數據庫,但我已經使用該方法。使用CI DataMapper加入不同數據庫中的表ORM
用戶模型:
class User extends DataMapper {
var $prefix = "app_";
var $db_params = 'default';
...
公司模式:
class Company extends DataMapper {
var $prefix = "tbl_";
var $db_params = 'super';
...
我有以上車型。他們與用戶擁有一家公司和公司擁有許多用戶相關。 當我創建一家公司時,會自動創建一個用戶,並且這個關係是成功的。
然而,當我嘗試刪除公司,或嘗試存取權限的用戶的相關公司。 DataMapper在錯誤的地方查找用戶表。
我得到了以下錯誤:
A Database Error Occurred
Error Number: 1146
Table 'a1210alf.app_users' doesn't exist
SELECT `tbl_companies`.* FROM (`tbl_companies`) LEFT OUTER JOIN `app_users` app_users ON `tbl_companies`.`id` = `app_users`.`company_id` WHERE `app_users`.`id` = 4
在我的CI配置我有兩個數據庫「默認」和「超級」兩個不同的設定。我在模型中設置了正確的一個。表app_users確實存在,所有需要的字段都在那裏。不知道我做錯了什麼。
那麼有可能,我會用我現在使用的代碼編輯問題。 – Brainfeeder 2013-12-04 11:59:09
好的謝謝分享你的代碼:) – soupdiver 2013-12-05 08:24:19
沒問題。請注意,應用程序爲使用該應用程序的每個「公司」使用了不同的數據庫。這就是爲什麼當有人登錄時(這是在默認(共享)系統數據庫上運行),我可以在控制器中加載正確的數據庫連接參數。如果沒有「動態」參數,則可以通過在主控制器中返回靜態參數來使用相同的Approuch。 – Brainfeeder 2013-12-05 11:54:25