Cakephp: findAll query return duplicated records

当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)