使用 CodeIgniter 中的 Active Record 类从 4 个表中选择数据

Posted

技术标签:

【中文标题】使用 CodeIgniter 中的 Active Record 类从 4 个表中选择数据【英文标题】:Select data from 4 tables using Active Record Class in CodeIgniter 【发布时间】:2017-09-21 19:15:17 【问题描述】:

我想在 codeIgniter 中使用 Active Record 类从 4 个表中选择数据

我的桌子: 老师(id_teacher,姓名) 学生(id_parent,姓名,id_teacher,id_class,id_school) 类(id_class,libelle) 学校(id_school,名称)

这是我的代码:

$this->db->select("t.*, s.*, c.*, sh.*");
$this->db->from("teacher t");
$this->db->join("student s","t.id_teacher=s.id_teacher");
$this->db->join("class c","c.id_class=s.id_class");
$this->db->join("school sh","c.id_school=sh.id_school");

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

但它不起作用。你能帮帮我吗?

【问题讨论】:

你没有返回结果这里是例子codeigniter.com/user_guide/database/results.html 是的,我在“$query”中执行结果...它正在处理 3 个表,但是当我添加最后一个表时它不起作用 这一行缺少双引号$this->db->from("teacher t);...首先在$this->db->from("teacher t); 中加上右双引号,最后是$this->db->from("teacher t"); 谢谢,但在我的代码中我已经完成了双引号,但它不起作用 【参考方案1】:

你有两个 from() 我将第二个替换为 join()

如果您需要特定类型的 JOIN,您可以通过函数的第三个参数指定它。选项有:左、右、外、内、左外和右外。

public function test() 
    $this->db->select("t.*, s.*, c.*, sh.*");

    $this->db->from("teacher t");

    // $this->db->join("student s","t.id_teacher=s.id_teacher");

    $this->db->join('student s', 's.id_teacher = t.id_teacher' , 'LEFT');

    $this->db->join('class c', 'c.id_class = s.id_class', 'LEFT');

    // $this->db->from("school sh","c.id_school=sh.id_school");

    $this->db->join('school sh' ,"sh.id_school = c.id_school", 'LEFT');


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

    return $query->result_array(); 

【讨论】:

我没有看到 :( !! 我的代码在我只有 3 个表时有效,但是当我添加最后一个“加入”时它不起作用

以上是关于使用 CodeIgniter 中的 Active Record 类从 4 个表中选择数据的主要内容,如果未能解决你的问题,请参考以下文章

动态 Active Record 查询中的 Codeigniter 括号

Codeigniter Active Record 中的子查询

CodeIgniter Active Record 中的 SQL 注释?

Where 子句 CodeIgniter 中的 Active Record 问题

从 Codeigniter Active Record 中的子查询中选择

CodeIgniter/PHP Active Record 不会增加整数