私はユーザーが新しいアカウントを作成してプロフィール写真をアップロードできるシステムを開発しています。私は2つのモデルを使用しています:User
アカウント、Photo
写真。CakePHP 3.x新しいレコードだけでなく関連する新しいレコードを保存する
テーブルにはの外部キーがあり、photos.id
を参照しています。 photos
テーブルには、users.id
を参照する外部キーを持つuserId
フィールドがあります。だから、ユーザーと写真の間に再帰的な関係があります。この理由:Photo
が作成されたときに、User
がPhoto
をアップロードしたことがわかります。 User
には、プロフィール画像としてPhoto
が1つあります。
ですので、Photo hasOne User
とUser hasOne Photo
です。これらは、テーブルクラスでもこのように構成されています。
新しいUser
が保存されたら、新しいPhoto
も保存します。 Photo
は、保存するために新しく作成されたUser
のIDが必要ですが、User
には新しく作成されたIDであるPhoto
が必要です。
私の質問:これを保存する最も良い方法は何ですか? User.photoId
をヌルにして、最初にユーザを保存してから写真を保存し、次にユーザに正しいPhoto.id
を更新させるか、CakePHP3があなたのために前後にリンクするすべてのマジックを行うことができるようにする必要があります?
形から来ているデータ:
[
'username' => 'John Doe',
'mail' => '[email protected]',
'password' => 'whatever',
'photo' => [
'name' => 'myImage.jpg',
'type' => 'image/jpeg',
'tmp_name' => '/private/var/tmp/phpN3dVmL',
'error' => (int) 0,
'size' => (int) 40171
]
]
は、私は、CakePHPは自動的にhasOneの関係を処理することを承知しているが、実体「を有するが、」第二のエンティティがすでに存在する場合にのみ(他のモデルは、その外部キーとして持つことができ、IDがありますので)それはです。しかし、両方のエンティティが新しい(まだIDを持っていない)ときに何をすべきか? – Koen
それにも注意してください。 – cjquinn