2

CakePHP 2.xでHABTMテーブルを使用する場合、関連付けを削除するときに「削除された」フィールドのみが更新されるように、「ソフト削除」手法(つまり、結合テーブル内に「削除された」ブールフィールドを持つ)を使用する最良の方法は何ですか。行が削除される代わりに「1」?

例として、1つ以上のジャンルの一部となることができる映画のデータベースがあります。すべてのテーブルには「削除済み」フィールドがあるため、データベースからデータが削除されることはなく、「削除済み」フィールドのみが必要に応じて1または0に更新されます。

映画

  • id
  • 名前
  • 削除

ジャンル

  • id
  • 名前
  • 削除

ジャンル映画

  • genre_id
  • movie_id
  • 削除

映画を追加または編集するとき、ユーザーは映画を関連付ける1つ以上のジャンルを選択できます。以前に関連付けられたジャンルがムービーから削除された場合、「削除済み」は「1」に設定されます。その後、同じジャンルが映画に再関連付けされると、「0」に更新されます。

CakeDCのUtilsプラグイン( https://github.com/CakeDC/utils )からSoftDeleteの動作を試しましたが、これはMovieとGenreには最適ですが、結合テーブルGenreMovieには機能しないようです。行を完全に削除します。

4

1 に答える 1

0

リレーションシップでdeleteQueryを作成できます。

また、結合テーブルのレコードが削除されないようにするには、次を参照してください。

unique: ブール値または文字列 keepExisting.

   If true (default value) cake will first delete existing relationship records in the foreign keys table before inserting new ones. Existing associations need to be passed again when updating.
   When false, cake will insert the relationship record, and that no join records are deleted during a save operation.
   When set to keepExisting, the behavior is similar to true, but existing associations are not deleted.
于 2012-05-29T18:50:54.197 に答える