1

私は比較的新しいCakePHPです。関連するデータを保存しようとしています。CakePHP saveAll関連するデータを更新または挿入します

今はメッセージデータベースとユーザーデータベースがあり、メッセージを送信するユーザーをユーザーテーブルに保存したいと思いますが、複数のメッセージを送信すると、このユーザーは既にそこにいる可能性があります。

今私は次のように更新しています:

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

CakePHPはそれが新しいものであるかのようにユーザーを挿入しようとしますが、メールが既に存在している、ユニークでなければなりませんので、しかし、これはエラーをスローするようにMySQLを引き起こし。

これを行う方法はありますか?または、ユーザーが既に自分自身に存在するかどうかを確認する必要がありますか?

TIA。

答えて

3

usersテーブルに'id'フィールドがありますか?

もしそうなら、これはCakePHPが行を更新したり挿入したりするかどうかを判断するために使うものです。

Userから検索すると、少なくとも'id'になるように、ユーザーを更新するデータをシードするのが最良です。 'id'を入力しないと、CakePHPは挿入しようとします。

+0

ユーザーにはIDがありますが、固有の値ではありません。電子メールアドレスは固有の部分です。私はメッセージを挿入しようとしているときにユーザーのIDを知らない。 最初に電子メールで見つけてそのIDを使ってユーザーを更新するか、IDを残してケーキを新しいユーザーにすることをお勧めしますか? – Ezra

+0

これは正しいことです。新しいユーザーを作成しないようにするには、最初にユーザーのIDを見つける必要があります。 – ianmjones

関連する問題