2013-08-16 28 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