Pular para o conteúdo principal
Versão: 1.x

← 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,
]);
observação

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;
}
}

Veja também​