私は使用方法が不思議でしたLaravels softdelete MySql foreign key restrictのようなものがあります。Laravel外部キーと制限付きのソフト削除?
既にフレームワークに何かが組み込まれていますか? Softdeleteはすでに動作していますが、私は関連するモデルに対して何らかのバリデーションが必要です。例えば
おかげで、彼らは削除ソフト持っLaravelに
私は使用方法が不思議でしたLaravels softdelete MySql foreign key restrictのようなものがあります。Laravel外部キーと制限付きのソフト削除?
既にフレームワークに何かが組み込まれていますか? Softdeleteはすでに動作していますが、私は関連するモデルに対して何らかのバリデーションが必要です。例えば
おかげで、彼らは削除ソフト持っLaravelに
はい、models.ToがモデルにこのIlluminate\Database\Eloquent\SoftDeletes
形質を使用して追加し、ユーザーにエラーメッセージが「それHAST 5関連レコードがため、この項目を削除することはできません」 deleted_at
の列を$dates
に設定します。
彼らはまた、彼らのクエリソフト削除モデルを持っています。あなたは誰でも選ぶことができます。
あなたはhere.
ありますこれについてのすべてのドキュメントを取得することができますが、ソフト削除の「unpluging」DB関係のためのソリューションには、ビルドではありません。
public function boot()
{
User::deleted(function ($user) {
if ($user->deleted_at) {
// here You have to unplug all the dependencies
}
});
}
'deleting'イベントの使用をお勧めします。モデルがソフト削除を使用していても、 'deleted' /' deleted'イベントは引き続き使用されます。さらに、OPのようなサウンドは削除を防止したいかもしれないので、beforeイベントがより適切でしょう。 – patricus
はい、可能ですが、私はソフト削除の方が安全だと思います(この日付を別の場所に設定した方が安全でしょう) –
ソフトならば 'saving' /' saved'イベントが呼び出されますかレコードを削除しますか?コードを見ると、クエリビルダーの更新を使用してソフト削除が実行されるように見えます。つまり、 'saving' /' saved'イベントは呼び出されません。 – patricus
Softdeleteが既に働いている:あなたは例のために何ができるか
はオブザーバー(event listener)を使用するかのような例
deleting
/deleted
ためeloquent model eventsを使用することです。ただし、項目が実際には削除されないため、mysqlのキー制約は無視されます。 – fabian「これは5つの関連レコードがあるので、このアイテムを削除することはできません」これはjavascriptでこれを行うことができます。 –