CakePHP saveAll更新或插入相关数据

时间:2011-06-25 22:38:40

标签: mysql cakephp constraints foreign-key-relationship belongs-to

我是CakePHP的新手,我正在尝试保存一些相关数据。

现在我有一个消息数据库和一个用户数据库,我想保存在users表中发送消息的用户,但如果他们发送多条消息,这些用户可能已经在那里。

现在我正在更新:

$this->Message->saveAll(array(
    'Message' => array(
        'contents' => $contents,
    ),
   'User' => array(
        'name' => $name,
        'email' => $email,
    )
);

然而,这会导致mysql抛出错误,因为CakePHP尝试插入用户就好像它是新的一样,但电子邮件已经存在且应该是唯一的。

有没有办法做到这一点?或者我应该检查用户是否已经存在?

TIA。

1 个答案:

答案 0 :(得分:3)

用户表中是否有'id'字段?

如果是这样,这就是CakePHP将用来确定它是应该更新还是插入一行。

因此,您最好首先从User进行查找,以便为要更新用户的数据播种,至少获取'id'。如果您不提供'id' CakePHP将尝试插入。