2013-08-16 81 views
0

我看到了following post,我試圖用我的查詢方式來使用它,但是我使用了兩個不同的表。從不同的表中獲得額外的字段

  • 我有我的登錄表,它使用logins_model,我有用戶表。
  • 裏面的登錄表,它只包括登錄信息需要登錄用戶英寸
  • 我目前有電子郵件地址作爲用戶登錄密碼字段的方式。
  • 在我的用戶表中,它包含有關用戶的所有個人信息。

我想要做的是,當用戶登錄成功,他們被髮送到控制面板,我在查詢數據庫的用戶表中顯示他們的個人信息,但我也需要電子郵件地址顯示。

我想弄清楚如何在初始查詢時收集該電子郵件地址字段。

這裏是GitHub repo for MY_Model from Jamie Rumbelow

有沒有人對此有任何建議?我當然會很感激。

我希望別人可以擺脫一些有關MY_Model工作知識的其他見解。

我一直在這一天作戰,並希望任何人會建議任何其他建議。

編輯:

我發現我可以可以使一個附加功能,但它只是把電子郵件地址字段爲對象,而不是從用戶表中的數據的電子郵件地址。是不是我的「M做錯了。

$user_data = $this->user->with_email_address()->get_by('user_id', $user_id); 

public function with_email_address() 
{ 
    $this->db->join('logins', 'logins.user_id = users.user_id'); 
    $this->db->select('logins.email_address AS email_address'); 

    return $this; 
} 

回答

2

如果你要提供在該模型中的功能與電子郵件地址返回的所有信息,你必須選擇JOIN所有字段。

試試這個:

public function with_email_address($user_id) 
{ 

    $this->db->join('logins', 'logins.user_id = users.user_id'); 
    $this->db->select('users.*'); 
    $this->db->select('logins.email_address AS email_address'); 

    return parent::get_by('user_id', $user_id); 
} 
+0

我還在做$ user_data = $ this-> user-> with_email_address() - > get_by('user_id',$ user_id); – user2576961

+0

你不應該。只需調用這個函數而不是另一個。 –

+0

我想通過這種方式只能在該表中選擇一個字段,然後執行原始獲取。 – user2576961

2

而不是查詢您的其他表中,可以在會話變量保存用戶的電子郵件地址時,這樣你就不會需要查詢用戶登錄你的數據庫多次的只是一個變量

在這裏您可以找到有關會議的更多信息:

http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

如果你仍然考慮使用多個查詢,你可以在你的一個模型中編寫一個函數,它將返回一個包含用戶數據的數組。

編輯:你也可以在一個查詢中加入結果,這樣你只需要一個查詢。 這是一個良好的開端:

http://ellislab.com/codeigniter/user-guide/database/examples.html

+0

我想過將它添加到會話數據。但是我什麼,我把會話數據嚴格,我寧願是隻把用戶的ID。我更喜歡做多個查詢,但我想知道如何使用我提供的MY_Model來完成此操作。 – user2576961

+0

你有沒有使用過我介紹過的MY_Model? – user2576961