0

複数のテーブルからデータを抽出して変数に入れ、コントローラーに返す方法を学ぼうとしています。

次のような1つのテーブルから情報を取得できます。

            $this->db->select('first_name, last_name');
            $this->db->from('people');
            $this->db->where('first_name', $firstname);
            $this->db->where('last_name', $lastname);
            $result = $this->db->get();

しかし、別のテーブルからデータを取得し、それらをより多くのユーザー入力を保持する他の変数と照合する方法については混乱しています。

CIWebサイトでActiveRecordのドキュメントを読みましたが、探しているのはjoin()クエリだけであることがわかりましたが、使用方法がわかりません。例は役に立ちません。私はこれを理解していないので、ウェブサイトで:

$this->db->join('comments', 'comments.id = blogs.id');

「コメント」はテーブル「コメント」を意味しますか?また、変数をcomments.idと比較する場合、次のように一重引用符の外に変数を含める必要があります'comments.id =' $blogidか?

または、これを行うことはできますか:1つのテーブルからクエリを実行し、それらの結果を次のように変数に入れます。

$result1 = $this->db->get();

次に、他のテーブルからもう一度クエリを実行して、それを入力します

$result2

それから私は言うことができます:$query = $result1 + $result2;

それは可能ですか?

誰かがこの情報を確認する/私を助けてくれるなら、私は素晴らしいでしょう。ありがとう

4

2 に答える 2

5

アクティブレコード結合の使用に問題がある場合は、次のように単純にMySQLクエリを使用できます。

$query_str = "SELECT user.*,role.*  FROM user ,role  where role.id = user.role_id and  user.username = ? AND user.password = ?";
$result = $this->db->query($query_str,array($username,$password));

あなたのコード: $this->db->join('comments', 'comments.id = blogs.id');コメントテーブルIDがブログテーブルIDと等しいコメントとブログテーブルからデータを取得すると言います。

また、上記のクエリのアクティブレコードは次のようになります:

  $this->db->select('user.*,role.*')
  $this->db->from('user');
  $this->db->where('user.username', $username);
  $this->db->where('user.password', $password);
  $this->db->join('role','role.id = user.role_id')
  $result = $this->db->get();

両方のテーブルが関連していることを確認する必要があります。

于 2012-12-03T20:17:40.520 に答える
1

私にはそれを達成する別の方法があります、

$this->db->select('a.*,b.course_name');
$this->db->from('fees_master a,course_master b');
$this->db->where('a.course_id = b.course_id',NULL,FALSE);
$query = $this->db->get();
return $query->result_array();

私はこれを試しましたが、うまくいきました。これが誰かに役立つことを願っています。

于 2014-08-02T11:16:09.807 に答える