0

次の投稿を見て、クエリに使用しようとしていますが、2 つの異なるテーブルを使用しています。

  • logins_model を使用する logins テーブルと users テーブルがあります。
  • logins テーブル内には、ユーザーのログインに必要なログイン情報のみが含まれます。
  • 私は現在、ユーザーがパスワードフィールドでログインする方法として電子メールアドレスを持っています。
  • 私の users テーブルには、ユーザーに関するすべての個人情報が含まれています。

私がしたいのは、ユーザーが正常にログインすると、コントロール パネルに送信され、ユーザー テーブルのデータベースに照会して個人情報を表示することですが、表示するには電子メール アドレスも必要です。

最初のクエリを実行するときに、その電子メール アドレス フィールドを収集する方法を見つけようとしています。

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

電子メール アドレスを含むすべての情報を返す関数をモデルに提供する場合は、 のすべてのフィールドを選択する必要があります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 に答える
2

他のテーブルにクエリを実行する代わりに、ユーザーのログイン時にユーザーの電子メール アドレスをセッション変数に保存できます。この方法では、1 つの変数についてデータベースに複数回クエリを実行する必要がなくなります。

ここでは、セッションに関する追加情報を見つけることができます。

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

それでも複数のクエリを使用することを検討している場合は、モデルの 1 つに関数を記述して、ユーザーのデータを含む配列を返すことができます。

編集:結果を 1 つのクエリに結合することもできます。この方法では、必要なクエリは 1 つだけです。これが良いスタートです:

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

于 2013-08-16T18:14:14.267 に答える