2013-03-10 28 views
3

在CI中,你如何將模型相互關聯?我現在有四個模型用戶,用戶部門,用戶到部門,UserStatus和我需要加入這四個模型以便能夠拾取所有數據。代碼點火器模型到模型的關係

我有這樣的代碼在我的控制器來接所有用戶的用戶表數據:

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

保存在用戶表中的user_status只是STATUS_ID所以我需要連接到UserStatus表獲得users_status_id的等效名稱。我需要知道用戶所屬的組的列表。所以我需要從基於Users.userid的UsersToDepartment表中獲取它。然後獲取UsersDepartment表中的等效組名。請參閱我的圖來進一步解釋。 enter image description here

我知道在本機PHP,這可以通過使用連接來完成。這在CI中是如何完成的?

我知道有警予,你能做到這樣

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

這可能與CI嗎?

回答

5

例如u有table_one,並想用自己的身份證

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

//then do the query 

加入table_two你可以閱讀下面這個鏈接,更完整的教程:

http://ellislab.com/codeigniter/user-guide/database/active_record.html

+0

嗨Mohur,是的,我已經閱讀了前面。但是,當我調用$ this-> User_model-> get_by_id($ user_id) - > row()時,我可以從那裏添加一個關係嗎?就像在YII框架中一樣,我們可以使用「with('usermodel,usertodepartmentmodel,statusmodel')」; – user1149244 2013-03-10 16:39:50

-2

嘗試使用連接表的這個查詢

Select a.*,b.* 
from table_one a 
inner join table_two b where b.id=a.id 
0

參考$this->db->join();標題Active Record: CodeIgniter

我知道codeigniter是不是很好這裏。所以我總是比較喜歡Yii。

+0

你有沒有實現模型的關係像yii?我正在尋找相同的。檢查我所嘗試的是在這裏像yii。並會在這裏更新.http://www.yiiframework.com/forum/index.php/topic/60061-implement-functionality-of-yii-1x-in-codeigniter/ – 2014-12-08 07:07:39

+0

我也試過Yii,model來建模關係。 – user1149244 2015-10-04 07:46:26

2

代碼點火器不是一個PHP的ORM框架...

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

但您可以通過連接查詢進行模擬。

這些工作只是讓你的其他模型的數據,而不是讓你的模型對象...

+0

謝謝,我想過這個問題,因爲我已經用YII嘗試過了,使用起來很方便。 – user1149244 2015-10-04 15:35:07

+0

然而,有解決方案:) https://github.com/nazieb/elegant-orm – 2017-03-13 10:29:05