Aller au contenu principal
Version: 1.x

← Précédent · Retour au README · Suivant →

Eloquent

L’enregistrement du modèle stocke automatiquement Str::slug(title) dans slug via SlugCast, en utilisant la valeur finale de title après les setters personnalisés du titre. Les mutateurs de titre personnalisés et saveQuietly() sont pris en charge. Renommer le titre modifie le slug. Par exemple, Products devient products. Les mises à jour et insertions en masse via le constructeur de requêtes contournent l’enregistrement du modèle ; utilisez plutôt les méthodes create(), update() ou save() du modèle.

Choisissez des titres produisant des slugs distincts et non vides pour les flux sélectionnés et planifiés. Un titre dont la normalisation produit un slug vide ne peut pas être sélectionné. Plusieurs enregistrements non supprimés ayant le même slug provoquent une Illuminate\Database\MultipleRecordsFoundException lors de la recherche ; aucun suffixe n’est ajouté automatiquement.

Modèle d’enregistrement de flux personnalisé​

Définissez feeds.model sur un modèle de l’application lorsque les enregistrements de flux nécessitent des colonnes, casts, relations ou méthodes supplémentaires. Le modèle personnalisé doit étendre DragonCode\LaravelFeed\Models\Feed.

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',
];
}
}

Enregistrez le modèle dans config/feeds.php :

'model' => App\Models\Feed::class,

Ajoutez les colonnes personnalisées à la table des flux dans une migration de l’application. Conservez dans $fillable chaque attribut autorisé pour l’assignation en masse.

FeedQuery utilise le modèle configuré pour les opérations de création, de recherche, de liste, de mise à jour, de suppression et de restauration. Lors de la création d’un enregistrement, transmettez les valeurs propres à l’application via extra. Elles sont appliquées en dernier et peuvent remplacer les arguments de la méthode :

$feed = app(FeedQuery::class)->create(
class: SomeFeed::class,
title: 'Some',
expression: '0 */12 * * *',
extra: [
'is_foo' => true,
'is_bar' => true,
]
);

Le modèle de l’application peut également utiliser l’API Eloquent habituelle :

use App\Models\Feed;

$feed = Feed::create([
'class' => SomeFeed::class,
'title' => 'Some',
'expression' => '0 */12 * * *',
'is_active' => true,
'is_foo' => true,
'is_bar' => true,
]);
remarque

Le modèle configuré est résolu à l’exécution. L’analyse statique considère le résultat de FeedQuery::create() comme le modèle de base du paquet. Utilisez App\Models\Feed::create() ou un type local explicite lorsque l’autocomplétion des propriétés propres à l’application est nécessaire.

Taille des lots​

Les requêtes de base de données utilisent des lots de 1000 éléments par défaut. Vous pouvez modifier cette valeur en remplaçant la méthode chunkSize :

use DragonCode\LaravelFeed\Feeds\Feed;

class UserFeed extends Feed
{
public function chunkSize(): int
{
return 500;
}
}

Voir aussi​