0

私はcodeigniterを初めて使用します。現在、私は練習として小さなプロジェクトに取り組んでおり、同じWebページに2つのテーブルのデータを表示しようとしています。codeigniterで使用しようとし$this->db->join(); ましたが、機能しません。同じWebページに2つのテーブルデータを表示するために検討できる他のオプションはありますか?

私が試したjoinメソッドも投稿しています-何か間違ったことをしたと言ってもらえますか?

モデル

  $this->db->select('tblanswers.*,credentials.*');
    $this->db->from('tblanswers');
    $this->db->join('credentials', 'tblanswers.answerid = credentials.cid', 'left'); 
    $query = $this->db->get();
    return $query->result();

この結合関数の問題は、一方のテーブルのみが表示され、もう一方のテーブルは表示されないことです。私は print_r($data['query']); die()これをチェックするために使用しましたが、両方ではなくtblanswerのみを返します。

編集

テーブル構造:

資格情報

+--------------+------+-------------+-------+-------+
| cid(PRIMARY) | name | second_name | phone | email |
+--------------+------+-------------+-------+-------+

tblanswers

+-------------------+--------+------------+---------+---------+---------+
| answerid(PRIMARY) | userid | questionid | answerA | answerB | answerC |
+-------------------+--------+------------+---------+---------+---------+
4

1 に答える 1

2

わかりました。まず、結合を実行するには、テーブルにリレーショナルデータが必要です。

return $this->db->select('tblanswers.*,credentials.*')
                      ->join('credentials cred', 'tblanswers.answerid = credentials.cid', 'LEFT')
                      ->get('tblanswers')
                      ->result_object()

したがって、これにより、* answeridフィールド=cidフィールドである資格情報テーブルからデータをフェッチするクエリが実行されます。

例えば

  SELECT * FROM tblanswers
  JOIN credentials ON credentials.cid = tblanswers.answerid

編集

イベントはあなたが単に行くことができるもののために参加を使用する必要がないようです

 return $this->db->select('tblanswers.*,credentials.*')
                ->from('tblanswers, credentials')
                ->get()
                ->result_object();

2つの間にリレーショナルデータがあるようには見えないためですが、たとえば、次の手順を実行することで、そのオーンサーに関連するすべての質問を取得できます。

return $this->db->select('tblanswers.*,questions.*')
                      ->join('questions AS q', 'tblanswers.questionid = q.question_id', 'LEFT')
                      ->get('tblanswers')
                      ->result_object()
于 2013-03-05T08:42:06.397 に答える