model:prune は Laravel 9 で導入された Artisan コマンドで、Eloquent モデルに public function prunable(): Builder を実装した「削除対象」を自動でクリーンアップします。
コマンド実行時に各モデルの prunable() を呼び出し、返却されたクエリビルダーで取得したレコードを delete() で一括削除します。
2. コマンドシグネチャ
php artisan model:prune [options] [--model=]...
オプション
型
必須
既定値
説明
--force
bool
いいえ
false
確認プロンプトをスキップ
--dry-run
bool
いいえ
false
削除件数を表示のみ(実際は削除しない)
--model
string[]
いいえ
[]
指定モデルのみを対象(複数可)
--except
string[]
いいえ
[]
指定モデルを除外
戻り値
int – 削除件数(--dry-run でも削除件数を返す)。
3. 実務での使い方
3.1 典型的なユースケース
例:30日以上非アクティブなユーザーを削除
// app/Models/User.php
use Illuminate\Database\Eloquent\Prunable;
use Illuminate\Support\Carbon;
class User extends Model
{
use Prunable;
public function prunable()
{
return static::where('last_login_at', '<', Carbon::now()->subDays(30));
}
}