2012-10-11 29 views
0

我正在使用MY_model,正如Codeigniter-base-model。我無法得到基本的關係工作。我搜索了很多,但可以找到解決方案。在Jamie Rumbelow中使用關係MY_model


首先我有2個班item_model.php & user_model.php都擴展MY_Model。

item_model類我已經定義

public $belongs_to = array('user' => array('model' => 'user_model')); 

,並在user_model

public $has_many = array('items' => array('model' => 'item_model')); 

現在,當我打電話

$item_details = $this->item_model->with('user')->find_by_id($item_id); 

我得到正確的數據控制器$item_details但我無法從'用戶'獲取信息'關係。 $item_details->user_id->username;

我收到以下錯誤

消息:試圖讓非對象的屬性

表是標準

users table has id, username, ... 
item table has id, user_id, title... 

user_id is is setUp as FK to users.id. 

請幫助。

+1

什麼是find_by_id方法? –

+0

感謝@JamieRumbelow的回覆。我已經在MY_model中編寫了自己的函數,請給我清楚說明這應該如何工作? – chirag

+1

那麼,你使用內置的查找方法來獲取數據嗎?如果你不是,那麼觀察者不會被調用,所以關係沒有被適當地選擇。恐怕我需要看一些代碼來幫助你。 –

回答

1

如果你檢查涉及()方法的源代碼,你會發現這片代碼:

if (is_string($value)) 
     { 
      $relationship = $value; 
      $options = array('primary_key' => $value . '_id', 'model' => $value . '_model'); 
     } 
     else 
     { 
      $relationship = $key; 
      $options = $value; 
     } 

我檢查源代碼,如果使用數組來定義模型,則還需要定義'primary_key',這不在文檔中。

'primary_key'表示該表的哪個外鍵鏈接我的primary_key。

public $belongs_to = array('user' => array('model' => 'user_model','primary_key'=>'user_id')); 

會更加正確。

1

不應該$item_details->user_id->username;$item_details->user->username;

也是你的用戶表叫userusers?你在這裏告訴它稱之爲user

public $belongs_to = array('user' => array('model' => 'user_model')); 
+0

是表名是'用戶'。我試過'$ item_details-> user-> username;'沒有工作,這給出了兩個錯誤。'嚴重性:注意 消息:未定義的屬性:stdClass的:: $用戶 行號:5 一個PHP錯誤遇到 嚴重性:注意 消息:試圖讓非對象 ' – chirag

+0

的財產,這是否回答你的問題?如果是這樣,你能標記它嗎? –