Heim >Datenbank >MySQL-Tutorial >Laravel Eloquent ORM in Bangla Part-Pruning-Modellen)

Laravel Eloquent ORM in Bangla Part-Pruning-Modellen)

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-16 20:18:11946Durchsuche

Laravel Eloquent ORM in Bangla Part-Pruning Models)

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.

Hauptmethode:

1. Beschneiden alter Modelle (alte Datensätze löschen)

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.

Verwenden Sie die 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.

2. Verwenden Sie geplante Aufgaben zum Beschneiden

Sie können die Aufgabenplanungsfunktion von Laravel verwenden, um alte Daten regelmäßig zu einem bestimmten Zeitpunkt zu löschen.

Erstellen Sie eine geplante Aufgabe:

  1. Öffnen Sie die Datei app/Console/Kernel.php und fügen Sie Ihre Bereinigungsaufgabe in der Methode 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.

3. Verwenden Sie Artisan-Befehle zum Trimmen

Sie können Trimmvorgänge auch manuell mit Artisan-Befehlen durchführen. Löschen Sie Daten, indem Sie einen neuen Laravel Artisan-Befehl erstellen.

Erstellen Sie benutzerdefinierte Artisan-Befehle:

  1. Befehl erstellen:
<code class="language-bash">php artisan make:command PruneOldPosts</code>
  1. Erstellen Sie einen benutzerdefinierten Befehl in der Datei app/Console/Commands/PruneOldPosts.php:
<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>
  1. Befehl ausführen:
<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.

4. Sanftes Löschen und Zuschneiden

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.

5. Beschneiden und eloquente Beziehung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn