CodeIgniter中的相关模型

时间:2014-01-24 14:58:22

标签: codeigniter

我已经开始了我在CI的第一个项目,并再次陷入困境!

我为“公司”

创建了模型,控制器,视图和数据库表

公司包括以下内容:

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

我希望这些问题足够明确,并且感谢您的回顾。

1 个答案:

答案 0 :(得分: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);
}