【问题标题】:Delete belongsTo association not working删除 belongsTo 关联不起作用
【发布时间】:2014-11-17 15:30:15
【问题描述】:

我对关联有疑问。我有两个表:公司和用户。

User hasOne Company and Company belongsTo User (OneToOne)

在我的模型中,我写道:

/* User.php Model */
public $hasOne = array(
    'Company' => array(
        'className' => 'Company',
        'dependent' => true
    )
);

/* Company.php Model */
public $belongsTo = array(
    'User' => array(
        'className' => 'User',
        'dependent' => true
    )
);

我的问题:当我这样做时

$this->Company->delete($id, true)

在我的 CompaniesController 中,ID 为 $id 的公司被删除,但关联的用户未被删除。

你能帮帮我吗?

【问题讨论】:

  • 您确定您的数据模型代表用户 hasOne 公司(hasOne 不像其他关联那样普遍)?您的用户表是否有 company_id 列?如果是,那么用户属于公司,公司有很多用户。
  • 我的用户“是”一家公司。但我需要一个没有公司的管理员用户。这就是为什么我决定有两个单独的表,而不是在管理行的用户表中留下空字段。

标签: cakephp model-associations belongs-to cascading-deletes


【解决方案1】:

belongsTo 中没有“依赖”选项,因此唯一真正起作用的选项是相反的。

如果您删除一个用户,它将删除它的公司。

基本上,删除父级可以删除它的依赖子级。但是删除一个孩子不能删除它的“依赖”父母(因为在 Cake 的“依赖父母”的情况下真的没有这样的事情)。

更多详情:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html


您可以选择在两个方向上运行关联(要求每个表中都有一个字段来确定它属于哪个)。这样,无论您删除哪个,它都应该始终删除另一个。

或者,您可以删除拥有该公司的用户。

【讨论】:

  • 我决定删除用户而不是公司。谢谢你的回答真的很有帮助。
猜你喜欢
  • 1970-01-01
  • 2020-12-05
  • 2014-07-24
  • 1970-01-01
  • 2013-06-22
  • 2013-03-03
  • 2016-07-25
相关资源
最近更新 更多