1対多接続の2つのモデルがあります。たとえば、User
ans UserComment
モデルとしましょう。私がUser::destroy
メソッドを呼び出すときには、のインスタンスをuser_id
のフィールドが、User
のid
に等しい値で破棄したいと考えています。私は単にUser::destroy
メソッドをオーバーロードすることがありますが、これを達成するためのより良い方法があるのだろうかと思います。Laravelのすべての依存関係を持つモデルインスタンスを破棄します
0
A
答えて
1
はい、移行によって移行するのが最善の方法です(より効率的です)。 User
とUserComment
という小さな例を考えてみましょう。ユーザーの移行はそのままです。 UserCommentの場合:
Schema::create('usercomments', function(Blueprint $table){
$table->integer('user_id')->unsigned();
....
$table->foreign('user_id', 'fk_user_id')
->references('id')
->on('users')
->onDelete('cascade')
->onUpdate('cascade'); //not needed in your case.
});
[OK]を私は長い間使用していないので、構文をオンラインでチェックすることがあります。しかし、それはその要点です。
ユーザーを削除すると、彼のコメントはすべてDBによって自動的に削除されます。
Goodluck mate!
1
これは(上記のEddyTheDoveで提案したように)データベースを使用しますが、このためにデータベースを使用したくない場合は、ユーザーモデルの削除イベントに何かを追加できます。
例:
protected static function boot() {
parent::boot();
static::deleting(function($user) {
$user->user_comments()->delete();
});
}
関連する問題
- 1. Pax Exam:すべての依存関係を持つバンドルをプロビジョニング
- 2. すべての依存関係を持つPipアンインストール
- 3. トリガーの依存関係:destroy:オーバーライドdestroy-methodを使用して破棄
- 4. 依存関係とテストの依存関係を持つjarを作成する
- 5. すべての依存関係をインストール
- 6. laravelのすべてのクッキーを破棄します
- 7. 依存関係を持つオブジェクトのデシリアライズ
- 8. ジョブジョブの依存関係を持つトルクジョブ
- 9. Mavenの依存関係を持つjava.lang.NoClassDefFoundError
- 10. Gradle依存関係の競合 - すべての依存関係を維持する
- 11. すべての依存関係を持つAARファイルを生成する
- 12. すべての依存関係を持つqtアプリケーションを展開する
- 13. すべての依存関係を持つPythonアプリケーションを配布するには
- 14. すべての依存関係を持つ.aarを構築する
- 15. mavenサブプロジェクト - 独自の依存関係を持つべきか
- 16. Verilogコンパイルのすべての依存関係を見つける
- 17. couchDB Windows用のすべての依存関係を持つ完全なパッケージ
- 18. 外部の依存関係を持つすべての内部アセンブリとアセンブリ
- 19. cmake依存関係を持つCメタ
- 20. クライアントアーティファクトを持つejb - ランタイム依存関係?
- 21. 依存関係を持つSbtタスク
- 22. フィールド依存関係を持つLuceneクエリ
- 23. 依存関係を持つAntスクリプト
- 24. 依存関係を持つコンバーター
- 25. 依存関係を持つC++キュー
- 26. 依存関係を持つPythonスクリプト
- 27. 依存関係を持つSparkR雇用
- 28. 依存関係を持つカスタムMSBuildタスク
- 29. リモートURL依存関係を持つMakefile
- 30. リファクタルーター - 依存関係を持つビュー
私は移行は、MySQLのストアドプロシージャを設定することができる右のことを理解していますか?これは驚くように見えます!私はそれをチェックします、ありがとう。 –
Googleでこれについて語った。これはストアドプロシージャではなく、MySQLの外部キー実装です。とにかく、私のSQL知識のギャップを記入していただきありがとうございます。 –