我有一个“个人资料”模型,它与“用户”模型属于一种关系。
某个用户已经存在。后来他创建了一个档案。配置文件控制器负责创建新条目,但随后需要将profile_id字段更新为关联用户的一部分。我的印象是saveAll可以处理所有关联,但它不起作用?
最简单的/ CakePHP标准方法是做什么的?谢谢!
答案 0 :(得分:1)
你不应该在users表中有一个profile_id字段,你应该在profile表中有user_id字段(外键类似于hasMany关系)。我很惊讶该应用程序仍可正常运行http://book.cakephp.org/view/1041/hasOne
另外,我通常没有hasOne关系。如果User hasOne Profile,则只需将profiles表中的所有字段都包含在users表中,除非有某些原因不这样做。但同样,这只是我的偏好。
答案 1 :(得分:1)
saveAll()创建新记录。因此,您无法使用它来更新Users表中已存在的记录。正如Anh Pham已经提到的那样,你的关联错了。配置文件属于用户,用户具有一个配置文件。通过在Users表中创建profile_id字段,您可以反过来这样做。
因此,从Users表中删除profile_id字段,将user_id字段添加到“个人档案”表中,并在user.php&中更新模型关联。 profile.php。
要为现有用户保存新配置文件,您可以查询当前用户的用户ID,或者例如通过Auth检索,并在调用保存之前手动将其添加到$ this->数据您的Profile方法的()方法。