Php 从CodeIgniter中的视图加载关系数据

Php 从CodeIgniter中的视图加载关系数据,php,codeigniter,orm,lazy-loading,Php,Codeigniter,Orm,Lazy Loading,我正在使用CodeIgniter 我有两张桌子- 公司 int id, varchar名称 员工内部id、varchar名称、内部公司id 我有一个简单的控制器叫做雇员控制器 <?php class Employees extends CI_Controller { public function index() { ---- ---- $data['employees'] = $selected_employees; $this->load-&

我正在使用CodeIgniter

我有两张桌子-

公司 int id, varchar名称

员工内部id、varchar名称、内部公司id

我有一个简单的控制器叫做雇员控制器

<?php 

class Employees extends CI_Controller {

    public function index()
           {

----
----
$data['employees'] = $selected_employees;
$this->load->view('employees/index',$data);
}

}

在您的模型上加入

public function get_ selected_employees(){
    $this->db->select('Employee.*, Company.name as company_name');
    $this->db->from('Employee');
    $this->db->join('Company', 'Employee.company_id = Company.id');
    return $this->db->get()->result();
}

要获得公司名称,只需对员工[4]进行操作。公司名称在您的模型上加入

public function get_ selected_employees(){
    $this->db->select('Employee.*, Company.name as company_name');
    $this->db->from('Employee');
    $this->db->join('Company', 'Employee.company_id = Company.id');
    return $this->db->get()->result();
}

要获取公司名称,只需执行employees[4]。公司名称最好的方法是在SQL查询中使用join语句。SQL查询通常如下所示:

SELECT * FROM Employee JOIN Company ON Employee.company_id = Company.id
然而,CodeIgniter的活动记录类将帮助我们简化这个过程(请参阅)。在模型中,您可以这样编写查询:

$this->db->select('*');
$this->db->from('Employee');
$this->db->join('Company', 'Employee.company_id = Company.id');
$query = $this->db->get();
您可以对其进行调整,以选择所需的确切数据,就像任何SQL查询一样:

$this->db->select('Employee.id, Employee.name, Employee.company_id, Company.name AS company_name');
您还可以将left、right、outer、inner、left-outer或right-outer作为第三个参数添加到
$this->db->join()函数中,以允许左连接、右连接等


如果可能,我建议在CodeIgniter应用程序中使用Active Record类。这将有助于保持查询的干净、有序和可读性。

最好的方法是在SQL查询中使用join语句。SQL查询通常如下所示:

SELECT * FROM Employee JOIN Company ON Employee.company_id = Company.id
然而,CodeIgniter的活动记录类将帮助我们简化这个过程(请参阅)。在模型中,您可以这样编写查询:

$this->db->select('*');
$this->db->from('Employee');
$this->db->join('Company', 'Employee.company_id = Company.id');
$query = $this->db->get();
您可以对其进行调整,以选择所需的确切数据,就像任何SQL查询一样:

$this->db->select('Employee.id, Employee.name, Employee.company_id, Company.name AS company_name');
您还可以将left、right、outer、inner、left-outer或right-outer作为第三个参数添加到
$this->db->join()函数中,以允许左连接、右连接等


如果可能,我建议在CodeIgniter应用程序中使用Active Record类。它将有助于保持查询的干净、有序和可读性。

如何获取这些数据?对吗?你为什么不加入呢?是的。通过查询。我注意到你已经习惯了orm,你可以在这个问题上阅读更多关于orm的内容,codeigniter不支持orm开箱即用,你必须有一些插件,如果你不想,我可以发布一个带有连接的查询来解决你的问题对不起,您是否仍然需要加入,或者您是否打算实现或查看此处:如何获取该数据?对吗?你为什么不加入呢?是的。通过查询。我注意到你已经习惯了orm,你可以在这个问题上阅读更多关于orm的内容,codeigniter不支持orm开箱即用,你必须有一些插件,如果你不想,我可以发布一个带有连接的查询来解决你的问题对不起,您仍然需要加入还是要实现或查看此处:这很好,但会有冲突,因为两个表都有
name
字段,只需使用
$This->db->select('Employee.*,Company.name as Company_name')或类似。谢谢Fabio。这很有帮助。我没有想到使用连接的可能性。干杯这很好,但会有冲突,因为两个表都有
name
字段,只需使用
$This->db->select('Employee.*,Company.name作为Company_name')或类似。谢谢Fabio。这很有帮助。我没有想到使用连接的可能性。干杯谢谢RJ详尽的回答。干杯谢谢RJ详尽的回答。干杯