2014-01-24 42 views
0

我已經開始了我在CI中的第一個項目,並且又一次讓自己變成了一個結!CodeIgniter中的相關模型

我創建了「公司」

一個公司由以下的模型,控制器,視圖和數據庫表:

Company ID 
Company Name 
Company Registration Number 
Credit Limit 
Website 
Address 
Postcode 
Country 

我控制器允許您查看公司的名單,編輯公司或創建新公司。

現在我希望每個公司都有一個「聯繫人」列表。每個公司會有一個或多個聯繫人。我的聯繫人表是這樣的:

Contact ID 
Company ID (this is the foreign key) 
First Name 
Last Name 
Position 
Email Address 
Telephone 
Mobile 

這是我已經得到了困惑,並有許多問題如下:

1)我應該有「接觸」一個完全獨立的模型,控制器和視圖?我不清楚他們是否應該分開或者他們是否應該成爲「公司」控制者和模型的一部分,因爲他們是相關的。

2)我的傾向是聯繫人應該是一個單獨的模型。如果是這種情況,那麼當您刪除公司時,您希望也刪除該公司的所有相關聯繫人。如果你照顧整個刪除過程中:

$this->company_model->delete_company($company_id) /* Delete from both company & contacts */ 

或者你應該這樣調用兩種型號:

$this->company_model->delete_company($company_id); 
$this->contacts_model->delete_contacts_list($company_id); 

3)會是什麼/我應該路由樣子。查看,添加和刪除聯繫人只能通過公司視圖進行。所以,如果我們認爲該公司與ID 123這樣的:

/company/view/123 

我們如何查看公司123相關的聯繫人?就像這樣:

/company/view/123/contacts 

或者這樣:

/contacts/123 

我希望這些問題是不夠清楚,感謝尋找。

回答

0

你剛纔叫你剛剛寫了這樣yourcontrollermethodname/123

然後在控制器控制器功能名稱叫你既模型

yourcontrollermethodname($company_id = NULL) { 
    $this->company_model->delete_company($company_id); 
    $this->company_model->delete_contacts_list($company_id); 
} 

,並在模型製作2種方法delete_company和delete_contacts_list,只是通過ID並刪除它們,如果你想調用視圖然後在控制器

yourcontrollermethodcallscompanylist() 
{ 
    // make model 
    $data['company_list'] = $this->company_model->company_list(); 
    $this->load->view('abc',$data); 
} 
+0

但不應該「聯繫」是一個單獨的模型從「compa ny「,因爲儘管他們有聯繫,但聯繫不是公司。 這就像有一個網上商店,只有一個叫做「商店」的模型,而不是產品,銷售,客戶等的獨立模型。 – MrCarrot

+0

只生成一個模型,如果它是商店模型只需將公司和聯繫方法都放在那裏,並且當您調用您應該編寫的方法時,您應該這樣寫:$ this-> shop_model-> delete_company($ company_id); $ this-> shop_model-> delete_contacts_list($ company_id); –

+0

但是當公司不僅有聯繫人,還有銷售訂單和發票時呢?當然,一切都不應該進入一種模式?是不是每個數據庫表模型更好的設置? – MrCarrot