如何使用CodeIgniter中的Active Record Class从多个表中获取数据

时间:2012-12-03 19:31:51

标签: codeigniter activerecord

我试图学习如何从多个表中提取数据并将它们放入变量并将它们返回给我的控制器。

我可以从一张表中获取信息:

            $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();

但我对如何从另一个表中获取数据并将其与其他变量与其他变量相匹配感到困惑。

我已经阅读了CI网站上的Active Record文档,但我发现的唯一可能是我正在寻找的是join()查询,但我不知道如何使用它,该示例在网站上没有帮助,因为我不明白这一点:

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

'评论'表示表'评论'?如果你将一个变量与comments.id进行比较,你是否必须在单引号之外包含变量,如下所示:'comments.id =' $blogid

或者我可以这样做:从一个表中查询并将这些结果放在变量中,如下所示:

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

然后再从另一个表中执行另一个查询并将其放入

$result2

然后我可以说:$query = $result1 + $result2;

这可能吗?

如果有人可以请确认此信息/帮助我,我会很高兴。感谢

2 个答案:

答案 0 :(得分:4)

如果您在使用活动记录加入时遇到问题,可以使用以下方式简单地使用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();

您需要确保两个表都相关。

答案 1 :(得分: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();

我尝试了这个并且它有效,我希望这可以帮助某人。