Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
Database cakephp数据库设计_Database_Cakephp_Associations - Fatal编程技术网

Database cakephp数据库设计

Database cakephp数据库设计,database,cakephp,associations,Database,Cakephp,Associations,我的数据结构如下: Company hasMany Regions Region hasMany Markets Market hasMany Stores Store hasMany Employees 必要时,我也有相应的物品 我使用外键进行关联。例如,每个商店都有市场标识 当我删除公司记录时,正确的区域也会被删除。然而,我突然想到,我还需要删除所有相关的市场、商店和员工。或者,如果我删除了一个市场,我需要删除所有商店和员工 实现这一点最合适的方式是什么 是否要向表中添加其他外键?例如,除

我的数据结构如下:

Company hasMany Regions
Region hasMany Markets
Market hasMany Stores
Store hasMany Employees
必要时,我也有相应的物品

我使用外键进行关联。例如,每个商店都有市场标识

当我删除公司记录时,正确的区域也会被删除。然而,我突然想到,我还需要删除所有相关的市场、商店和员工。或者,如果我删除了一个市场,我需要删除所有商店和员工

实现这一点最合适的方式是什么

  • 是否要向表中添加其他外键?例如,除了市场id之外,商店还需要地区id和公司id吗

  • 使用依赖关联:

    依赖:当dependent设置为true时,将删除递归模型 可能的在本例中,注释记录将在其 关联的用户记录已被删除


    您不需要添加额外的外键。

    您好,谢谢您的回复。这只适用于一个级别。我把依附添加到公司的hasMany Regions模型中。这产生了预期的结果,相关区域被删除。但是,市场、商店和员工并未被删除。(我确实在所有模型中添加了dependent)。接下来,我尝试将Company hasMany市场添加到公司模型中。这将导致以下错误:“致命错误:类声明可能未嵌套…”我需要递归删除以分布在多个表中,从公司到地区到市场,以存储到基于删除公司的员工。好的,我知道了!CompaniesController.php中的delete调用需要将cascade设置为true。这看起来像$This->Company->delete($id,true)。此外,对于从其他级别开始,如果我从Market开始删除,我会将cascade添加到true,以删除关联的商店和员工。