如何使用CodeIgniter中的活动记录类从多个表中获取数据

如何使用CodeIgniter中的活动记录类从多个表中获取数据,codeigniter,activerecord,Codeigniter,Activerecord,我试图学习如何从多个表中提取数据,并将它们放入一个变量中,然后将它们返回给我的控制器 我可以从一个表中获得如下信息: $this->db->select('first_name, last_name'); $this->db->from('people'); $this->db->where('first_name', $firstname); $this->

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

我可以从一个表中获得如下信息:

            $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

可能吗


如果有人能确认这个信息/帮助我,我将不胜感激。谢谢

如果您在使用active record Join时遇到问题,您可以通过以下方式简单地使用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')
表示从comment和blogs表获取数据,其中comments表ID等于blogs表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();

您需要确保这两个表是相关的

如果您在使用active record Join时遇到问题,可以通过以下方式简单地使用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')
表示从comment和blogs表获取数据,其中comments表ID等于blogs表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();

您需要确保这两个表是相关的

我有另一种方法来实现它

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

我尝试过这个方法,效果很好,我希望它能帮助别人。

我有另一种方法来实现它

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

我尝试了这个方法,效果很好,我希望它能帮助别人。

我建议你仔细阅读SQL连接。这里有一篇很好的文章让你开始:谢谢我读了它,似乎join不是我想要的,因为我不需要比较两个不同表中的值,我只想从不同表中的列名中获取不同的值,并将它们放入一个变量中,即$result@AZ1当你说你想把两列合并成一列时,你能举个例子说明你的期望吗?@peacemaker我希望这样:从一张名为“car”的桌子上,我可以得到它的品牌,从一张名为“house”的桌子上我可以得到它的成本。然后,这两个东西将从查询组合成一个名为$result的变量,然后我可以将它们返回到我的控制器中,以显示在我的视图中。希望它能让老师建议您阅读SQL连接。这里有一篇很好的文章让你开始:谢谢我读了它,似乎join不是我想要的,因为我不需要比较两个不同表中的值,我只想从不同表中的列名中获取不同的值,并将它们放入一个变量中,即$result@AZ1当你说你想把两列合并成一列时,你能举个例子说明你的期望吗?@peacemaker我希望这样:从一张名为“car”的桌子上,我可以得到它的品牌,从一张名为“house”的桌子上我可以得到它的成本。然后,这两个东西将从查询组合成一个名为$result的变量,然后我可以将它们返回到我的控制器中,以显示在我的视图中。希望它能使$this->db->select('user.*,role.*')意味着从user和role表中全选?但是如果我想选择不同表中存在的不同数据段呢?i、 e.用户名和姓氏出现在用户表中,年龄和性别出现在另一个表中。我如何才能获得与用户输入内容匹配的数据?@AZ1而不是user.*,role.*使用user.firstname,user.lastname,role.age,它将从这两个表中获取firstname,lastname和age。是的,第一个参数是表名,每当我们使用'blog.id'时,它指的是blog tables id列。好的,那么join是用来匹配表之间的数据对的吗?$this->db->select('user.*,role.*')是否意味着从user和role表中全选?但是如果我想选择不同表中存在的不同数据段呢?i、 e.用户名和姓氏出现在用户表中,年龄和性别出现在另一个表中。我如何才能获得与用户输入内容匹配的数据?@AZ1而不是user.*,role.*使用user.firstname,user.lastname,role.age,它将从这两个表中获取firstname,lastname和age。是的,第一个参数是表名,每当我们使用'blog.id'时,它指的是blog tables id列。好的,那么join是用来匹配表之间的数据对的吗?