Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CodeIgniter中的相关模型_Codeigniter - Fatal编程技术网

CodeIgniter中的相关模型

CodeIgniter中的相关模型,codeigniter,Codeigniter,我在CI开始了我的第一个项目,我又陷入了困境 我已经为“公司”创建了一个模型、控制器、视图和数据库表 公司由以下人员组成: Company ID Company Name Company Registration Number Credit Limit Website Address Postcode Country “我的控制器”允许您查看公司列表、编辑公司或创建新公司 现在我希望每家公司都有一份“联系人”名单。每个公司将有一个或多个联系人。我的联系人表如下所示: Contact ID Co

我在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
$this->company_model->delete_company($company_id);
$this->contacts_model->delete_contacts_list($company_id);
/company/view/123
/contacts/123
这就是我感到困惑的地方,我有很多问题,如下所示:

1) 我是否应该为“联系人”设置一个完全独立的模型、控制器和视图?我不清楚它们是否应该分开,或者它们是否应该是“公司”控制者和模型的一部分,因为它们是相关的

2) 我倾向于触点应为单独的型号。如果是这种情况,当您删除一家公司时,您还需要删除该公司的所有相关联系人。您是否应该在以下情况下处理整个删除过程:

$this->company_model->delete_company($company_id) /* Delete from both company & contacts */
或者您应该这样称呼这两种模型:

Contact ID
Company ID (this is the foreign key)
First Name
Last Name
Position
Email Address
Telephone
Mobile
$this->company_model->delete_company($company_id);
$this->contacts_model->delete_contacts_list($company_id);
/company/view/123
/contacts/123
3) 我的路线应该是什么样的。只能通过公司视图查看、添加和删除联系人。因此,如果我们这样看待ID为123的公司:

Contact ID
Company ID (this is the foreign key)
First Name
Last Name
Position
Email Address
Telephone
Mobile
$this->company_model->delete_company($company_id);
$this->contacts_model->delete_contacts_list($company_id);
/company/view/123
/contacts/123
我们将如何查看123公司的相关联系人?像这样:

/company/view/123/contacts
或者像这样:

Contact ID
Company ID (this is the foreign key)
First Name
Last Name
Position
Email Address
Telephone
Mobile
$this->company_model->delete_company($company_id);
$this->contacts_model->delete_contacts_list($company_id);
/company/view/123
/contacts/123

我希望这些问题足够清楚,感谢您的关注。

您只需调用刚才编写的控制器函数名,就像这样
yourcontrollermethodname/123

然后在控制器中调用两个模型

yourcontrollermethodname( $company_id = NULL ) {
  $this->company_model->delete_company($company_id);
  $this->company_model->delete_contacts_list($company_id);  
}
在模型中,使用两种方法删除公司和联系人列表,只需传递id并删除它们,如果您想调用视图,则在控制器中

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

但“联系人”不应该是与“公司”分开的模式吗?因为尽管他们有关联,但联系人不是公司。这就像有一个在线商店,只有一个名为“shop”的模型,而不是产品、销售、客户等的单独模型。如果是shop模型,则只制作一个模型。只需将公司和联系方式放在那里,当您调用该方法时,您应该这样写:$this->shop\u model->delete\u company($company\u id); $此->店铺\型号->删除\联系人\列表($company \ u id);但是,当公司不仅有联系人,而且还有销售订单和发票时,情况又如何呢?当然,所有的东西都不应该放在一个模型中?每个数据库表的模型不是更好的设置吗?如果你想制作单独的模型,那么你必须为每个公司和联系人制作不同的控制器不同的模型不同的视图这是hmvc模式