4

在 CI 中,如何将模型相互关联?我现在有四个模型,Users、UsersDepartment、UsersToDepartment、UserStatus,我需要加入这四个模型才能获取所有数据。

我的控制器中有这段代码可以从用户表中选择所有用户数据:

function view($user_id){
                 $data['user'] = $this->User_model->get_by_id($user_id)->row();
}

Users表中保存的user_status只有status_id,所以我需要连接到UserStatus表来获取users_status_id的等效名称。我需要知道用户所属的组列表。所以我需要根据Users.userid从UsersToDepartment表中获取。然后在 UsersDepartment 表中获取等效的组名。请参阅我的图表以进一步解释。 在此处输入图像描述

我知道在原生 PHP 中,这可以通过使用 join 来完成。在 CI 中是如何做到的?

我知道yii,你可以这样做

$posts=Post::model()->with(
'author.profile',
'author.posts',
'categories')->findAll();

CI也有可能吗?

4

4 回答 4

8

例如你有table_one并且想要table_two使用他们的 id加入

$this->db->select('columns');
$this->db->from('table_one');
$this->db->join('table_two', 'table_two.id = table_one.id');

//then do the query

您可以阅读下面的链接以获取更完整的教程:

https://www.codeigniter.com/userguide2/database/active_record.html

于 2013-03-10T15:59:44.807 回答
3

代码点火器不是 php 的 ORM 框架...

你不能把它当作 ORM 框架(Laravel 是 ORM 框架的好例子)。

但是您可以通过查询连接来模拟它。

这项工作只是为您提供其他模型数据,而不是为您提供那些模型对象...

于 2015-09-17T14:16:43.683 回答
0

参考Active Record$this->db->join();中的标题:CodeIgniter

我知道codeigniter在这里不是很好。所以我总是更喜欢 Yii。

于 2013-12-02T12:47:12.127 回答
-3

尝试使用此连接表查询

Select a.*,b.*
from table_one a
inner join table_two b where b.id=a.id
于 2013-03-11T06:24:37.310 回答