CakePHP saveAll обновить или вставить связанные данные - PullRequest
1 голос
/ 26 июня 2011

Я относительно новичок в CakePHP и пытаюсь сохранить некоторые связанные данные.

Сейчас у меня есть база данных сообщений и база данных пользователей, и я хотел бы сохранить пользователя, отправляющего сообщение, в таблицу пользователей, но эти пользователи уже могут быть там, если они отправляют несколько сообщений.

Сейчас я обновляюсь так:

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

Однако это заставляет mysql выдавать ошибку, потому что CakePHP пытается вставить пользователя, как будто он новый, но электронная почта уже существует и должна быть уникальной.

Есть ли способ сделать это? Или я должен проверить, существует ли сам пользователь?

ТИА.

1 Ответ

3 голосов
/ 26 июня 2011

Есть ли у вас поле 'id' в таблице пользователей?

Если это так, CakePHP будет использовать его для определения необходимости обновления или вставки строки.

ИтакЛучше всего сначала найти User, чтобы получить данные, которые вы хотите обновить Пользователю, по крайней мере, чтобы получить 'id'.Если вы не предоставите 'id', CakePHP попытается вставить.

...