2012-03-12 56 views
1

我正在使用Codeigniter 2.1.0以及spark to enable PHP ActiveRecord,我無法通過查找表創建多對多關聯。 每當我加載失敗的事件模型「找不到模型事件的關聯eventcategories」,這是一個ActiveRecord的\ HasManyThroughAssociationExceptionPHP ActiveRecord - 無法在模型中找到關聯

按照以this topic我試着更新我的源與this patch沒有效果。

我也跟着this thread,並根據我在那裏給出的解決方案的協會。

我已經結束了與SQL語句:http://pastebin.com/ya65VWHC 及以下車型:http://pastebin.com/XEDTb6KS

我想一個事件與幾類相關聯,例如足球比賽時能有類「運動','家庭'和'有趣'。

我錯過了一些基本的東西嗎?

+0

我可以根據這裏的文檔添加http://www.phpactiverecord.org/projects/main/wiki/Associations#has_many_through我似乎無法理解我做錯了什麼。 – Bisa 2012-03-12 10:02:54

+1

當你需要點擊低谷到pastebin和你發佈的所有鏈接時,很難得到一個完整的圖片,所以不是一個答案,但我要找的一點是:它是否適用於多元化? (類別/類別)?你能爲自己做一個簡單的例子嗎? – Nanne 2012-03-12 15:54:42

+0

@Nanne嗨,我試過複數/單數,但不幸的是它不是。 (我對你的示例語句有些困惑,你想讓我編寫一個例子並將其發佈到這裏,或者僅僅用它來測試我的複數/單數?) thnx看看它=) – Bisa 2012-03-12 22:19:41

回答

1

我無法測試所有內容,因爲我沒有數據庫我可以將代碼轉儲(並且沒有任何測試數據:)),但是您的代碼與手冊有一些差異。

如果你看看這個頁面:http://www.phpactiverecord.org/projects/main/wiki/Associations#has_many_through

你看三個表,像這樣的地圖(我認爲)

Order  -> Category 
Payment  -> Eventcategory 
User   -> Event 

一個Category通過Eventcategory有多個Events,就像一個Order有幾個在示例中爲UsersPayment。周圍的其他方法的定義更基本的(一個User具有Orders

您在其中定義2「通過」的關係,本例中只有一個在Order類,留下user只需has_many。我認爲你可能需要解決這個問題,這是一個很大的區別。

而且,我真的不知道你在這部分做foreign_key定義:

array('events', 'foreign_key' => 'event_id', 
       array('through' => 'eventcategories', 'foreign_key' => 'event_id') 

IIF你有你不需要有明確指定他們打擾默認命名方案。

爲了解決這個問題,我將從訂單/用戶/付款示例開始,檢查它是否適用於您,然後替換所有部件(仔細:),以便它成爲您的代碼。

+0

我花了一個整整一個星期試圖弄清楚這個問題,phpar使用簡單的模型工具,但沒有更復雜的事情。 thnx您的建議,以打破它我決定從頭開始設置phpar,那是當我注意到它... * facepalm * *劃傷頭*我有CIs自己的活動記錄加載,並由於某種原因,這doe不會與基本用法衝突的phpar。嗯,thnx,我現在在辦公室裏跳舞; p btw,當涉及到外鍵時,你可能是正確的,但現在一切正常,所以我不會去碰它;) – Bisa 2012-03-13 08:50:14

+0

聽起來好像它是正確的再來一次,祝你好運跳舞:) – Nanne 2012-03-13 11:08:47