0

我看到了以下帖子,我正在尝试以某种方式使用它来查询,但是我使用的是两个不同的表。

  • 我有使用 logins_model 的登录表和用户表。
  • 在 logins 表中,它只包含用户登录所需的登录信息。
  • 我目前有电子邮件地址作为用户使用密码字段登录的方式。
  • 在我的用户表中,它包含有关用户的所有个人信息。

我想要做的是当用户成功登录时,他们会被发送到控制面板,在那里我查询数据库中的用户表以显示他们的个人信息,但是我还需要显示电子邮件地址。

我试图弄清楚在进行初始查询时如何收集该电子邮件地址字段。

这是来自 Jamie Rumbelow 的 MY_Model 的 GitHub 存储库

有人对此有什么建议吗?我当然会很感激。

我希望其他人可以提供一些具有 MY_Model 工作知识的额外见解。

我整天都在与这个作斗争,并希望有人提出任何其他建议。

编辑 :

我发现我可以创建一个附加功能,但是它只将电子邮件地址字段放入对象中,而不是包含用户表中数据的电子邮件地址。有什么我做错了吗。

$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;
}
4

2 回答 2

2

您可以在用户登录时将用户电子邮件地址保存在会话变量中,而不是查询您的其他表。这样,您无需多次查询数据库以获取一个变量。

在这里您可以找到有关会话的更多信息:

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

如果您仍然考虑使用多个查询,您可以在其中一个模型中编写一个函数,该函数将返回一个包含用户数据的数组。

编辑:您也可以在一个查询中加入结果,这样您只需要一个查询。这是一个好的开始:

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

于 2013-08-16T18:14:14.267 回答
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);
}
于 2013-08-19T15:46:51.047 回答