我的 CakePHP 是不是属于关系创建空白条目?
Posted
技术标签:
【中文标题】我的 CakePHP 是不是属于关系创建空白条目?【英文标题】:Is My CakePHP BelongsTo Relationship Creating Blank Entries?我的 CakePHP 是否属于关系创建空白条目? 【发布时间】:2011-01-07 00:14:52 【问题描述】:我有两个具有 HasMany-BelongsTo 关系的数据库表 Homes 和 Assets。
直到最近,每个资产都属于一个 Home。这最近变得更加复杂:现在一些资产属于房地产经纪人或地区而不是家庭。
今天,我的 Homes 表中出现了几十个空白条目。几乎可以肯定,它们是与 Home 无关的新资产被保存的结果。
资产模型中的 BelongsTo Home 关系是否可能会强制创建这些空白条目? (或者还有其他可能的原因?)如果是关系,是否有一种快速修改关系的方法,以便资产的生成可以但不必与生成新的入户?
已编辑:以下是模型之间的当前关系:
资产:
var $belongsTo = array(
'Home' =>array('className' => 'Home', 'foreignKey' => 'home_num'));
var $hasOne = array(
'Landmark' =>array('className' => 'Landmark', 'foreignKey' => 'asset_num',
'dependent' => true ));
首页:
var $hasOne = array('HighlightImage' => array(
'className' => 'Asset',
'conditions' => 'highlight_image = TRUE',
'order' => '',
'foreignKey' => 'home_num',
'dependent' => false,
'exclusive' => false,
'finderQuery' => ''));
var $hasMany = array('Assets' => array(
'className' => 'Asset',
'conditions' => '',
'order' => '(Assets.title + 0 ) ASC',
'limit' => '200',
'foreignKey' => 'home_num',
'dependent' => false,
'exclusive' => false,
'finderQuery' => ''));
地标:
var $belongsTo = array(
'Assets' => array(
'className' => 'Asset',
'foreignKey' => 'asset_num'),
'Regions' =>array(
'className' => 'Region',
'foreignKey' => 'region_num'));
地区:
var $hasMany = array('Landmarks' => array(
'className' => 'Landmark',
'foreignKey' => 'region_num'));
【问题讨论】:
您的关系不正确,请将您的关系代码发布到帖子中。 @Ish Kumar:使用模型关系进行编辑。很确定它们不是最理想的 - 如果您能帮我找出问题的具体罪魁祸首,我们将不胜感激! 【参考方案1】:听起来您有所谓的 ARC 关系。这意味着您有一个具有多个关系的资产表。如上所述,现在 Assets 表似乎将包含可以属于 3 个不同表的数据:Homes、Realtors 或 Regions。以我的经验,cake 不能很好地处理 ARC 关系。
我的建议是创建多个资产表:
home_assets
realtor_assets
region_assets
乍一看,您可能会认为这是过度杀戮。但是,就简单性而言,这是最好的方法。
您可以使用单个表,但需要做更多的工作。如果您真的想使用单个资产表,则需要添加一个额外的列(类型)(如果您还没有的话)。然后,您需要在每次保存之前将类型添加到资产,具体取决于保存数据的内容:家庭、房地产经纪人或地区。
如果您提供您正在使用的代码示例(适用于家庭、房地产经纪人和地区),因为它适用于资产,诊断会更容易。考虑使用 pastebin.com,因为我认为代码集可能相当大。
【讨论】:
哦,关系是一团糟(在我的辩护中,很多关系在我出现之前就已经到位!)资产表有 home_num、realtor_num 和 kiosk_num 字段 - 其中两个是 0对于任何给定的资产 - 指定所有权。以完全不同的方式做事,每个资产也有一个“地标”,它属于一个区域(其中有许多地标)。也许一个地标应该有一个资产,而不是相反?重构这一切的前景非常令人生畏。无论如何,我都会用模型关系更新问题......以上是关于我的 CakePHP 是不是属于关系创建空白条目?的主要内容,如果未能解决你的问题,请参考以下文章
CakePHP - 关系问题 - Posts.Child 属于用户,如何定义?