当Model之间的关系没有定义正确时,在cakephp中调用关联查询可能会导致冗余数据。
比如在Model:Deal中定义了hasone:Deal hasone Detail,
但是Detail的表定义中没有为Detail.deal_id设置相应的index和外键关联,而且没有把Detail.deal_id设置成unique的字段。
那么当程序逻辑出现错误,在Detail表格中对同一个Deal保存了多条数据时,这时CakePHP对数据的联合查询处理将处于混乱的状态。
$this->Deal->find('all',...) 查询结果将返回多条冗余记录。这里findAll在CakePHP中默认查询所有关联数据。除非设置recursive=-1。
解决方法是去除Detail表格中的冗余数据并设置好Detail和Deal表格之间的外键关联以及Detail.deal_id字段的唯一性属性。
本文探讨了CakePHP中由于模型关系配置不当导致的冗余数据问题。具体来说,Deal模型与Detail模型间的关系未正确设定,导致Detail表中Deal_id字段出现重复记录,进而使得查询结果混乱。文章最后提出了清理冗余数据及正确设置外键的方法。
618

被折叠的 条评论
为什么被折叠?



