【发布时间】:2012-12-18 20:53:24
【问题描述】:
在我的用户模型中,我有以下关系:
public $hasAndBelongsToMany = array(
'User'=>array(
'className' => 'User',
'joinTable' => 'friends',
'with' => 'Friend',
'foreignKey' => 'user_id',
'associationForeignKey' => 'friend_id'
)
);
将用户与用户作为朋友联系起来。但是,当我对单个用户执行某些操作时,例如更改密码或编辑用户详细信息(与朋友无关),它将开始在朋友表中执行操作,例如删除所有现有记录,然后添加空数据行。 .
我是否设置了错误的关系?是不是应该命名不同,这样我和$this->User打交道的时候就不会动朋友了?
编辑:自从发布此问题以来,我已将 user_id 和friend_id 更改为 user1_id 和 user2_id,以防止 Cake 通过假设它们是主键或 nIcO 下面解释的任何内容来对字段进行任何自动魔术。但是同样的问题还是会发生!
【问题讨论】:
-
实际查询是什么样的?您可以使用
$log = $this->User->getDataSource()->getLog(false, false); debug($log)来获取输出 -
在实际调用 Save 之前,您是否尝试在模型中执行
$this->recursive = 0?如果您从控制器调用 save,在调用 save 方法之前它将是$this->User->recursive=0。如果这不起作用,我明天将尝试在我的系统上设置一个测试场景。 --干杯