Heim >Datenbank >MySQL-Tutorial >Laravel Eloquent ORM in Bangla Part-Pruning-Modellen)
Mit der Modellbereinigungsfunktion von Laravel Eloquent können Sie veraltete oder unerwünschte Datensätze in Ihrer Datenbank automatisch löschen. Dies trägt dazu bei, die Leistung großer Datenbanken zu verbessern und unnötige Datenansammlungen zu verhindern. In Laravel können Sie Bereinigungsvorgänge über geplante Aufgaben oder Artisan-Befehle durchführen.
Diese Methode kann verwendet werden, wenn alte Datensätze nach einer bestimmten Zeit gelöscht werden müssen. Wenn Sie beispielsweise möchten, dass ein Beitrag 30 Tage nach seiner Erstellung automatisch gelöscht wird, können Sie die Trim-Funktion nutzen.
prune()
-Methode: Laravel Eloquent 8.x-Version führte die prune()
-Methode ein. Diese Methode dient zum Löschen von Datensätzen basierend auf bestimmten Bedingungen.
<code class="language-php">use App\Models\Post; class Post extends Model { protected static function booted() { static::pruning(function ($query) { // 删除 30 天前创建的帖子 $query->where('created_at', '<', now()->subDays(30)); }); } }</code>
Jedes Mal, wenn Sie Post::prune()
ausführen, werden Beiträge gelöscht, die 30 Tage alt sind.
Sie können die Aufgabenplanungsfunktion von Laravel verwenden, um alte Daten regelmäßig zu einem bestimmten Zeitpunkt zu löschen.
schedule()
hinzu. <code class="language-php">use App\Models\Post; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { protected function schedule(Schedule $schedule) { // 每天凌晨 1 点修剪旧帖子 $schedule->call(function () { Post::where('created_at', '<', now()->subDays(30))->delete(); })->dailyAt('01:00'); } }</code>
Dadurch werden jeden Tag um 1 Uhr morgens Beiträge von vor 30 Tagen gelöscht.
Sie können Trimmvorgänge auch manuell mit Artisan-Befehlen durchführen. Löschen Sie Daten, indem Sie einen neuen Laravel Artisan-Befehl erstellen.
<code class="language-bash">php artisan make:command PruneOldPosts</code>
<code class="language-php">namespace App\Console\Commands; use Illuminate\Console\Command; use App\Models\Post; class PruneOldPosts extends Command { protected $signature = 'posts:prune-old'; protected $description = 'Prune posts older than 30 days'; public function handle() { // 删除 30 天前创建的帖子 Post::where('created_at', '<', now()->subDays(30))->delete(); $this->info('Old posts pruned successfully!'); } }</code>
<code class="language-bash">php artisan posts:prune-old</code>
Dies wird manuell ausgeführt und Beiträge, die 30 Tage alt sind, werden gelöscht.
Manchmal möchten Sie möglicherweise das vorläufige Löschen verwenden, was bedeutet, dass der Datensatz nicht vollständig gelöscht, sondern nur als „gelöscht“ markiert wird. In diesem Fall können Sie die Soft-Delete- und Trim-Funktionen kombinieren.
<code class="language-php">use App\Models\Post; class Post extends Model { use SoftDeletes; protected static function booted() { static::pruning(function ($query) { // 修剪 30 天前软删除的帖子 $query->where('deleted_at', '<', now()->subDays(30)); }); } }</code>
Dadurch werden vorläufig gelöschte Beiträge gelöscht, die 30 Tage alt sind.
Wenn Sie Datensätze löschen möchten, die mit Datensätzen verknüpft sind, müssen Sie gleichzeitig diese Beziehungen löschen. Wenn Sie beispielsweise möchten, dass beim Löschen eines Beitrags auch die zugehörigen Kommentare gelöscht werden, können Sie die kaskadierende Löschfunktion verwenden.
<code class="language-php">class Post extends Model { use SoftDeletes; public function comments() { return $this->hasMany(Comment::class); } protected static function booted() { static::deleting(function ($post) { // 删除帖子时删除所有评论 $post->comments()->delete(); }); } }</code>
Dadurch wird sichergestellt, dass beim Löschen eines Beitrags auch die zugehörigen Kommentare gelöscht werden.
Das obige ist der detaillierte Inhalt vonLaravel Eloquent ORM in Bangla Part-Pruning-Modellen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!