0

次のモデルでget_poll機能します:Poll

class Poll_model extends CI_Model 
{
    public function get_poll($parameter) {
        $this->db->select('question.id, question.title, question.question, answer.answer')->from('answer')->join('question', 'answer.question_id = question_id')->where('question.id',$parameter);
        $query = $this->db->get();
        return $query->result_array();
}

結合を使用して2つのテーブルとテーブルから結果を取得しquestionanswer両方に列contentがあるため、result_arrayでは、次のような構造になります。

Array ( [id] => 1 [title] => favourate character [content] => Green ) 1

両方とも同じ列'content'を持っているので、上書きされたとanswer content思います。question content以下に示すテーブル構造:

CREATE TABLE `answer` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `question_id` int(11) unsigned NOT NULL,
  `content` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `question_id` (`question_id`),
  CONSTRAINT `answer_ibfk_1` FOREIGN KEY (`question_id`) REFERENCES `question` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;


CREATE TABLE `question` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(128) NOT NULL DEFAULT '',
  `content` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;

この問題を解決する方法はありますか?

4

1 に答える 1

0

->select()次のように、呼び出し内の列の名前を変更するだけです。

$this->db
    ->select('
        question.id id, 
        question.title title, 
        question.content question, 
        answer.content answer')
    ->from('answer')
    ->join('question', 'answer.question_id = question_id')
    ->where('question.id', $parameter);

結果行にはquestionanswerインデックスが含まれているはずです。

于 2012-11-21T21:06:01.723 に答える