WordPressやSymfonyのTipsを中心にアニメや日常の出来事について語ります。
メニュー

【Symfony2】論理削除(SoftDeleteable)の導入(備忘録)

この記事は約1分39秒で読めます

symfony2
ゆっきー
ども、カフェブロガーの悠木です。 お気に入りのカフェはドトールコーヒーです。 14時からの限定スイーツ「シューシャポー」が大好きです。

Symfon2に論理削除(SoftDeleteable)を導入する場合の手順を備忘録に残します。

動作環境

Symfony2 ver2.5.9ver2.7.5
SoftDeleteable ver2.3.9

論理削除(SoftDeleteable)の導入

Composerからインストール

composer.jsonを編集します。

autoloadrequireの部分にgedmoの2行を追加する。
オートローダーの設定も必要なので、注意です。

composer.jsonを更新したらアップデートします。

設定ファイルの更新

インストールしただけでは論理削除は使えないので設定ファイルを変更します。
app/config/config.ymlの修正

app/config/doctrine_extensions.ymlファイルを新規作成する

論理削除を有効化したいエンティティに設定

これで論理削除が実装できました。
これまでの物理削除と同じく$em->remove($entity);を呼び出せば$deletedAtに日付が入り論理削除されます。

findAll()などですべてのエンティティを呼び出しても論理削除されたエンティティは表示されません。
既存のコードは弄る必要がないので、とても導入しやすいです。

一時的に論理削除を無効化したい

一時的に無効化して物理削除したいという需要もあります。
論理削除を無効化する方法で詰まったので、備忘録として残します。

フィルターから論理削除の有効/無効の切り替え

2016.03.23 追記エンティティを物理削除するためには、論理削除されている必要があります。
そのため、二重にremoveすることになります。

ここの挙動は謎です。
フィルタを無効化しているんだから、一気に物理削除して欲しいです。

論理削除フィルタの有効/無効化の動きが分からなくてTeratailにも質問しました。
https://teratail.com/questions/30168

参考サイト

Symfony2,PHP オススメ書籍

関連記事

  1. symfony2
  2. Symfony2 KnpPaginatorBundleで全件数を取得する
  3. Symfony2 Routing Annotation
  4. Symfony2 blogチュートリアル 02 Symfony ディレクトリ構造
  5. Symfony2 ウェブ設定画面(エラー)
  6. Symfony2 MonologからSlackにメッセージを送る

コメントをお待ちしております

PR

カテゴリー