Zum Hauptinhalt springen

Erste Schritte

Installieren Sie das Paket, definieren Sie eine Eloquent-Abfrage und die Struktur eines Elements und erzeugen Sie anschließend eine Feed-Datei. In einer vorhandenen Laravel-Anwendung dauert der erste funktionierende Export etwa fünf Minuten.

Voraussetzungen

  • PHP 8.2 oder eine neuere, von Composer akzeptierte Version aus der Reihe 8.x
  • Laravel 11.x, 12.x oder 13.x
  • Eine konfigurierte Datenbank und ein Dateisystem-Datenträger

Installation und Vorbereitung

composer require dragon-code/laravel-feeds
php artisan vendor:publish --tag="feeds"
php artisan migrate
php artisan make:feed User --item

Der Generator erstellt die Feed- und Elementklassen. Außerdem erstellt er die Datenbankänderung zur Registrierung des Feeds. Führen Sie diese Migration vor der ersten Generierung aus, falls sie nach dem vorherigen migrate-Befehl erzeugt wurde.

Datenquelle definieren

Geben Sie einen Eloquent-Builder zurück, damit Datensätze in Chunks gelesen werden können.

namespace App\Feeds;

use App\Feeds\Items\UserFeedItem;
use App\Models\User;
use DragonCode\LaravelFeed\Feeds\Feed;
use DragonCode\LaravelFeed\Feeds\Items\FeedItem;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;

class UserFeed extends Feed
{
public function builder(): Builder
{
return User::query()
->whereNotNull('email_verified_at')
->where('created_at', '>', now()->subYear());
}

public function item(Model $model): FeedItem
{
return new UserFeedItem($model);
}
}

Jedes Element definieren

namespace App\Feeds\Items;

use DragonCode\LaravelFeed\Feeds\Items\FeedItem;

/** @property-read \App\Models\User $model */
class UserFeedItem extends FeedItem
{
public function toArray(): array
{
return [
'name' => $this->model->name,
'email' => $this->model->email,
];
}
}

Datei erzeugen

php artisan feed:generate

Der Befehl meldet den Status jedes Feeds; die normale Konsolenausgabe enthält keine Pfade zu erzeugten Dateien. Feed-Klassen verwenden standardmäßig XML und den Datenträger public. Ändern Sie den jeweiligen Wert in der Feed-Klasse.

Nächste Schritte