Viewing file: MassPrunable.php (1.17 KB) -rwxrwxr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Illuminate\Database\Eloquent;
use Illuminate\Database\Events\ModelsPruned; use LogicException;
trait MassPrunable { /** * Prune all prunable models in the database. * * @param int $chunkSize * @return int */ public function pruneAll(int $chunkSize = 1000) { $query = tap($this->prunable(), function ($query) use ($chunkSize) { $query->when(! $query->getQuery()->limit, function ($query) use ($chunkSize) { $query->limit($chunkSize); }); });
$total = 0;
do { $total += $count = in_array(SoftDeletes::class, class_uses_recursive(get_class($this))) ? $query->forceDelete() : $query->delete();
if ($count > 0) { event(new ModelsPruned(static::class, $total)); } } while ($count > 0);
return $total; }
/** * Get the prunable model query. * * @return \Illuminate\Database\Eloquent\Builder */ public function prunable() { throw new LogicException('Please implement the prunable method on your model.'); } }
|