1

User などのモデルがあり、このモデルの 2 つのインスタンスをマージしたいとします。たとえば、User2 を User1 にマージします。明示的にこれが私が意味することです:

  1. フィールドが User1 で既に入力されている場合、同じままにする必要があります。

  2. フィールドが User1 になく、User2 に存在する場合は、コピーする必要があります。

  3. SomeModel BelongsTo User の場合、User2 を指す SomeModel のすべてのインスタンスは、User1 を指すように変更する必要があります。

  4. SomeModel HasAndBelongsToMany ユーザーの場合も同様

  5. SomeModel に User2 があり、SomeModel1 に User2 があり、他のインスタンスに User1 がない場合は、SomeModel1 に代わりに User1 があるように変更する必要があります。

  6. SomeModel HasMany User の場合、SomeModel1 には User1 があり、SomeModel2 には User2 があります...まあ、ここではわかりませんが、唯一の解決策は SomeModel2 を破棄することだと思います。

最後に、User2 を削除する必要があります。

これを自動化する方法はありますか?多分振る舞い?そうでない場合は、たくさん必要になるので作成を検討するかもしれません。

4

1 に答える 1

1

2008 年に、まさにこの目的のために Merge ビヘイビアーを作成しました。

最新の CakePHP 安定版リリースで正しく動作させるには、多少の調整が必要になる場合がありますが、ここで見つけることができます

于 2011-08-31T14:02:24.923 に答える