← Anterior · Voltar ao README · Próximo →
Eloquent
Ao salvar um modelo, Str::slug(title) é armazenado automaticamente em slug por meio de SlugCast, usando o valor final de title após os setters personalizados do título. Mutators personalizados do título e saveQuietly() são suportados. Alterar o título altera o slug. Por exemplo, Products se torna products. Atualizações e inserções em massa pelo construtor de consultas ignoram o salvamento do modelo; use os métodos create(), update() ou save() do modelo.
Escolha títulos que produzam slugs distintos e não vazios para feeds selecionados e agendados. Um título cuja normalização resulte em um slug vazio não pode ser selecionado. Vários registros não excluídos com o mesmo slug causam Illuminate\Database\MultipleRecordsFoundException na busca; nenhum sufixo é adicionado automaticamente.
Modelo personalizado de registro de feeds
Defina feeds.model como um modelo da aplicação quando os registros dos feeds precisarem de colunas, conversões, relacionamentos ou métodos adicionais. O modelo personalizado deve estender 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',
];
}
}
Registre o modelo em config/feeds.php:
'model' => App\Models\Feed::class,
Adicione as colunas personalizadas à tabela de feeds em uma migration da aplicação. Mantenha em $fillable todos os atributos aceitos por atribuição em massa.
FeedQuery usa o modelo configurado nas operações de criação, busca, listagem, atualização, exclusão e restauração. Ao criar um registro, passe os valores específicos da aplicação por extra. Esses valores são aplicados por último e podem substituir os argumentos do método:
$feed = app(FeedQuery::class)->create(
class: SomeFeed::class,
title: 'Some',
expression: '0 */12 * * *',
extra: [
'is_foo' => true,
'is_bar' => true,
]
);
O modelo da aplicação também pode usar a API normal do Eloquent:
use App\Models\Feed;
$feed = Feed::create([
'class' => SomeFeed::class,
'title' => 'Some',
'expression' => '0 */12 * * *',
'is_active' => true,
'is_foo' => true,
'is_bar' => true,
]);
O modelo configurado é resolvido em tempo de execução. A análise estática considera o resultado de FeedQuery::create() como o modelo base do pacote. Use App\Models\Feed::create() ou um tipo local explícito quando precisar de autocompletar para propriedades específicas da aplicação.
Tamanho do lote
As consultas ao banco de dados usam lotes de 1000 itens por padrão. Para alterar esse valor, sobrescreva o método chunkSize:
use DragonCode\LaravelFeed\Feeds\Feed;
class UserFeed extends Feed
{
public function chunkSize(): int
{
return 500;
}
}