ホームページ >バックエンド開発 >PHPチュートリアル >Laravel Eloquent でモデルを削除するときに、関連する行を自動的に削除するにはどうすればよいですか?

Laravel Eloquent でモデルを削除するときに、関連する行を自動的に削除するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-14 11:05:10424ブラウズ

How Can I Automatically Delete Related Rows When Deleting a Model in Laravel Eloquent?

Eloquent ORM を使用して Laravel に関連行の自動削除を実装する

Eloquent ORM の標準の delete() メソッドは、単一行を削除します。この機能を拡張し、関連する行を自動的に削除するには、Eloquent イベントを利用します。

問題:
$user->delete() で行を削除するとき、どのようにアタッチできますか?関連する行を削除するための自動コールバック。 $this->photo()->delete()?

解決策:

deleting イベントは delete( ) メソッドが呼び出されます。モデル クラス内でイベント ハンドラーを定義することにより、削除時にクリーンアップ タスクを実行できます。

<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    public function photos()
    {
        return $this->has_many('Photo');
    }
    
    // This method is called before delete() is called
    protected static function booted () {
        static::deleting(function (User $user) {
            $user->photos()->delete();
        });
    }
}

追加メモ:

  • ブートされたメソッドを使用して、イベント ハンドラーを宣言することをお勧めします。
  • メンテナンスのためにクリーンアップ アクションをトランザクション内にラップすることを検討してください。参照整合性。

以上がLaravel Eloquent でモデルを削除するときに、関連する行を自動的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。