Laravel 8.5 以降、日付に基づいてモデルをプルーニングできるようにする特性がフレームワークに追加されました。これ
この特性は IlluminateDatabaseEloquentPrunable と呼ばれ、日付に基づいてモデルをプルーニングできるようになります。
この特性は、日付に基づいて削除するモデルがある場合に便利です。たとえば、モデルがあるとします
ログを保存しており、特定の日付より古いログを削除したいとします。
この記事では、日付に基づいてモデルをプルーニングできるようにする特性を作成する方法を見ていきます。
Prunable トレイトを使用するには、それをモデルに追加し、クエリを返す Prunable メソッドを定義する必要があります
ビルダーインスタンス。このクエリ ビルダー インスタンスは、日付に基づいてモデルをプルーニングするために使用されます。
モデルで Prunable 特性を使用する方法の例を次に示します。
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Prunable; class Log extends Model { use Prunable; public function prunable() { return $this->where('created_at', '<', now()->subDays(30)); } }
この例には、Prunable 特性を使用する Log モデルがあります。
を返す prunable メソッドを定義しました。
30 日より古いログを削除するクエリ ビルダー インスタンス。
モデルをプルーニングするには、特定の時間にプルーニングを実行するようにスケジュールする必要があります。これを行うには、コマンドを追加します
モデルの prune メソッドを呼び出す Routes/console.php ファイルにコピーします。
ログ モデルのプルーニングをスケジュールする方法の例を次に示します。
<?php use Illuminate\Support\Facades\Schedule; Schedule::command('model:prune')->daily();
この例では、model:prune コマンドが毎日実行されるようにスケジュールを設定しています。このコマンドは prune メソッドを呼び出します
ログ モデルに基づいて変更し、30 日を超えたログを削除します。
以上が剪定可能な雄弁なモデルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。