Pular para o conteúdo principal

Feeds e dados

A API principal separa a fonte de dados, o mapeamento dos itens, os metadados do feed, a estrutura da saída e o resultado da geração.

Feed

DragonCode\LaravelFeed\Feeds\Feed é a classe-base de uma exportação. Implemente builder() e sobrescreva apenas os pontos de saída necessários.

abstract public function builder(): Builder
MétodoPadrãoContrato
builder(): BuilderAbstratoRetorna a consulta Eloquent usada como fonte de dados.
item(Model $model): FeedItemNovo FeedItem baseMapeia um modelo para um item de saída.
transformers(): array[]Adiciona no início os transformadores deste feed.
chunkSize(): int1000Tamanho do lote da consulta ao banco.
perFile(): int0Registros por arquivo. Zero desativa a divisão por quantidade.
maxFiles(): int0Máximo de arquivos de saída. Zero não impõe limite.
header(): stringDeclaração XML para XML/RSSConteúdo antes da raiz e dos itens.
footer(): stringString vaziaConteúdo depois da raiz e dos itens.
root(): ElementDataNome derivado da classeDefine o elemento raiz e seus atributos.
info(): FeedInfoFeedInfo vazioDefine informações no nível do feed.
filename(): stringNome derivado da classeRetorna o nome de saída relativo ao disco.
path($suffix): stringCaminho resolvido pelo adaptadorRetorna um caminho local ou resolvido pelo adaptador.
storagePath($suffix): stringNome relativo ao discoRetorna o caminho usado nas operações de armazenamento.
storage(): FilesystemAdapterDisco publicResolve e valida o disco do Laravel.
format(): FeedFormatEnumXmlRetorna o formato de saída configurado.

Feed usa Conditionable e Macroable do Laravel.

Alvos de feed

DragonCode\LaravelFeed\Feeds\FeedTarget identifica uma saída gerada de forma independente. Seu construtor recebe uma chave string não vazia e um array opcional de parâmetros:

public function __construct(public readonly string $key, public readonly array $parameters = [])

Implemente DragonCode\LaravelFeed\Contracts\HasFeedTargets em uma classe de feed que adote esse recurso. O trait opcional DragonCode\LaravelFeed\Concerns\InteractsWithFeedTargets implementa forTarget() e target(); a classe do feed implementa a descoberta:

MétodoContrato
targets(): iterableRetorna sob demanda todos os FeedTarget disponíveis para execuções completas por comando e agendamento.
findTarget(string $key): ?FeedTargetResolve diretamente um alvo explícito do comando com a mesma chave ou retorna null.
forTarget(FeedTarget $target): staticRetorna um clone configurado e redefine seu nome de arquivo memorizado.
target(): FeedTargetRetorna o alvo configurado ou lança LogicException quando nenhum estiver definido.

O construtor rejeita chaves vazias ou formadas apenas por espaços, mas não normaliza nem sanitiza outros valores. Os parâmetros do alvo são opacos para o pacote e serializados como um snapshot do job da fila. A chave identifica o alvo e, por isso, deve ser estável e exclusiva dentro da classe do feed. Consulte a configuração de arquivos de saída separados e a seleção de saída no comando.

FeedItem e FeedInfo

FeedItem recebe o modelo Eloquent atual. Por padrão:

  • name() retorna o nome-base da classe do modelo em kebab case;
  • attributes() retorna um array vazio;
  • toArray() retorna o array do modelo.

FeedInfo::toArray() retorna um array vazio. As duas classes usam Conditionable e Macroable; estenda-as quando a saída exigir um esquema explícito.

ElementData

ElementData é um objeto somente leitura com três propriedades de construtor:

PropriedadeTipoPadrão
name?stringnull
attributesarray[]
beforeInfobooltrue

Defina name como null ou string vazia para omitir a raiz. Defina beforeInfo como false para gravar as informações antes dela.

Resultado da geração

GeneratorService::feed() retorna GenerationResultData. A propriedade somente leitura paths contém os arquivos publicados em ordem. records associa cada caminho à quantidade de registros gravados nesse arquivo.

Os métodos de geração e registro programáticos estão em Serviços e contratos de execução.

FeedFormatEnum

CasoValor
Xmlxml
Jsonjson
JsonLinesjsonl
Csvcsv
Rssrss

Veja também