← Zurück · Zurück zur README · Weiter →
Eloquent
Beim Speichern eines Modells wird Str::slug(title) automatisch über SlugCast in slug gespeichert. Dafür wird der endgültige Wert von title nach benutzerdefinierten Titel-Settern verwendet. Benutzerdefinierte Titel-Mutatoren und saveQuietly() werden unterstützt. Eine Änderung des Titels ändert den Slug. Beispielsweise wird Products zu products. Massenaktualisierungen und Einfügungen über den Query Builder umgehen das Speichern des Modells; verwenden Sie stattdessen create(), update() oder save() am Modell.
Wählen Sie für einzeln ausgewählte und geplante Feeds Titel, die unterschiedliche, nicht leere Slugs ergeben. Ein Titel, dessen normalisierter Slug leer ist, kann nicht ausgewählt werden. Mehrere nicht gelöschte Registrierungen mit demselben Slug lösen bei der Suche Illuminate\Database\MultipleRecordsFoundException aus; ein Suffix wird nicht automatisch hinzugefügt.
Benutzerdefiniertes Registrierungsmodell für Feeds
Setzen Sie feeds.model auf ein Anwendungsmodell, wenn die Registrierungsdatensätze für Feeds zusätzliche Spalten, Casts, Beziehungen oder Methoden benötigen. Das benutzerdefinierte Modell muss DragonCode\LaravelFeed\Models\Feed erweitern.
namespace App\Models;
use DragonCode\LaravelFeed\Models\Feed as BaseFeed;
class Feed extends BaseFeed
{
protected $fillable = [
'class',
'title',
'expression',
'is_active',
'last_activity',
'is_foo',
'is_bar',
];
protected function casts(): array
{
return [
...parent::casts(),
'is_foo' => 'boolean',
'is_bar' => 'boolean',
];
}
}
Registrieren Sie das Modell in config/feeds.php:
'model' => App\Models\Feed::class,
Fügen Sie die benutzerdefinierten Spalten in einer Anwendungsmigration zur Tabelle feeds hinzu. Nehmen Sie jedes für die Massenzuweisung zugelassene Attribut in $fillable auf.
FeedQuery verwendet das konfigurierte Modell zum Erstellen, Suchen, Auflisten, Aktualisieren, Löschen und Wiederherstellen. Übergeben Sie anwendungsspezifische Werte beim Erstellen eines Datensatzes über extra. Diese Werte werden zuletzt angewendet und können die Methodenargumente überschreiben:
$feed = app(FeedQuery::class)->create(
class: SomeFeed::class,
title: 'Some',
expression: '0 */12 * * *',
extra: [
'is_foo' => true,
'is_bar' => true,
]
);
Das Anwendungsmodell kann auch die reguläre Eloquent-API verwenden:
use App\Models\Feed;
$feed = Feed::create([
'class' => SomeFeed::class,
'title' => 'Some',
'expression' => '0 */12 * * *',
'is_active' => true,
'is_foo' => true,
'is_bar' => true,
]);
Das konfigurierte Modell wird zur Laufzeit aufgelöst. Die statische Analyse erkennt das Ergebnis von FeedQuery::create() als Basismodell des Pakets. Verwenden Sie App\Models\Feed::create() oder einen expliziten lokalen Typ, wenn die Autovervollständigung für anwendungsspezifische Eigenschaften benötigt wird.
Chunk-Größe
Datenbankabfragen verwenden Chunks mit standardmäßig 1000 Elementen. Sie können diesen Wert ändern, indem Sie die Methode chunkSize überschreiben:
use DragonCode\LaravelFeed\Feeds\Feed;
class UserFeed extends Feed
{
public function chunkSize(): int
{
return 500;
}
}