본문으로 건너뛰기
버전: 1.x

피드 및 데이터

핵심 API는 데이터 소스, 항목 매핑, 피드 수준 메타데이터, 출력 구조 및 생성 결과를 분리합니다.

Feed​

DragonCode\LaravelFeed\Feeds\Feed는 내보내기의 기본 클래스입니다. builder()를 구현하고 피드에 필요한 출력 지점만 재정의하십시오.

abstract public function builder(): Builder
메서드기본값계약
builder(): Builder추상 메서드데이터 소스로 사용할 Eloquent 쿼리를 반환합니다.
item(Model $model): FeedItem새 기본 FeedItem하나의 모델을 출력 항목으로 매핑합니다.
transformers(): array[]이 피드의 트랜스포머 클래스 이름을 앞에 추가합니다.
chunkSize(): int1000데이터베이스 쿼리 청크 크기입니다.
perFile(): int0파일당 레코드 수입니다. 0이면 개수에 따른 분할을 끕니다.
maxFiles(): int0최대 출력 파일 수입니다. 0이면 제한이 없습니다.
header(): stringXML/RSS용 XML 선언루트와 항목 앞에 기록할 내용입니다.
footer(): string빈 문자열루트와 항목 뒤에 기록할 내용입니다.
root(): ElementData클래스에서 파생한 요소 이름루트 요소와 속성을 정의합니다.
info(): FeedInfo빈 FeedInfo피드 수준 정보를 정의합니다.
filename(): string클래스에서 파생한 파일 이름디스크 기준 출력 파일 이름을 반환합니다.
path($suffix): string어댑터가 해석한 경로로컬 또는 어댑터가 해석한 경로를 반환합니다.
storagePath($suffix): string디스크 기준 파일 이름저장소 작업에 사용할 경로를 반환합니다.
storage(): FilesystemAdapterpublic 디스크Laravel 파일시스템 디스크를 해석하고 검증합니다.
format(): FeedFormatEnumXml구성된 출력 형식을 반환합니다.
converterOptions(): array[]이 피드가 상속한 Config 속성 값을 반환합니다. 자식 키는 부모 키를 재정의합니다.

Feed는 Laravel의 Conditionable과 Macroable을 사용합니다.

피드 대상​

DragonCode\LaravelFeed\Feeds\FeedTarget은 독립적으로 생성되는 하나의 출력을 식별합니다. 생성자는 비어 있지 않은 문자열 키와 선택적인 매개변수 배열을 받습니다.

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

선택적으로 사용하는 피드 클래스에 DragonCode\LaravelFeed\Contracts\HasFeedTargets를 구현하십시오. 선택 사항인 DragonCode\LaravelFeed\Concerns\InteractsWithFeedTargets 트레이트는 forTarget()과 target()을 구현하며, 피드 클래스는 대상 검색을 구현합니다.

메서드계약
targets(): iterable전체 명령 및 스케줄 실행에 사용할 모든 FeedTarget을 지연 방식으로 반환합니다.
findTarget(string $key): ?FeedTarget명시적인 명령 대상을 같은 키로 직접 해석하거나 null을 반환합니다.
forTarget(FeedTarget $target): static설정된 복제본을 반환하고 캐시된 파일 이름을 초기화합니다.
target(): FeedTarget설정된 대상을 반환하며, 설정되지 않았으면 LogicException을 발생시킵니다.

생성자는 비어 있거나 공백만 있는 키를 거부하지만 다른 값은 정규화하거나 정제하지 않습니다. 대상 매개변수는 패키지에 불투명하며 큐 작업의 스냅샷으로 직렬화됩니다. 키는 대상의 식별자이므로 피드 클래스 안에서 안정적이고 고유해야 합니다. 별도 출력 파일 설정과 명령에서 출력 선택을 참조하십시오.

FeedItem 및 FeedInfo​

FeedItem은 현재 Eloquent 모델을 받습니다. 기본 동작은 다음과 같습니다.

  • name()은 모델 클래스 기본 이름을 kebab case로 반환합니다.
  • attributes()는 빈 배열을 반환합니다.
  • toArray()는 모델 배열을 반환합니다.

FeedInfo::toArray()는 빈 배열을 반환합니다. 두 클래스 모두 Conditionable과 Macroable을 사용합니다. 출력에 명시적인 스키마가 필요하면 확장하십시오.

항목의 날짜 형식​

DragonCode\LaravelFeed\Attributes\DateFormat의 #[DateFormat('Y-m-d H:i')]를 FeedItem 클래스에 적용하여 날짜 형식을 재정의하십시오.

모델에 날짜 캐스트를 설정하고 toArray()에서 원래 DateTimeInterface 값을 반환하십시오. 이미 형식이 지정된 문자열은 다시 변환하지 않습니다.

namespace App\Feeds\Items;

use DragonCode\LaravelFeed\Attributes\DateFormat;
use DragonCode\LaravelFeed\Feeds\Items\FeedItem;

#[DateFormat('Y-m-d H:i')]
class ProductFeedItem extends FeedItem
{
public function toArray(): array
{
return [
'finishedAt' => $this->model->finished_at,
'createdAt' => $this->model->created_at,
'updatedAt' => $this->model->updated_at,
];
}
}

이 속성은 모든 출력 형식에 적용됩니다. 중첩된 JSON/XML 구조의 날짜와 XML/RSS 항목 속성을 위해 attributes()가 반환하는 날짜도 포함됩니다.

이 속성이 적용된 가장 가까운 부모 클래스의 형식을 상속합니다. 자식 클래스에 속성을 적용하면 상속된 형식을 재정의합니다. 이 속성은 피드별 날짜 형식과 전역 날짜 형식보다 우선하며 feeds.date.timezone 설정은 유지합니다.

FeedInfo, 루트 속성 및 이 속성이 없는 다른 항목은 일반적인 설정에 따른 변환 과정을 계속 사용합니다.

ElementData​

ElementData는 세 가지 생성자 속성을 가진 읽기 전용 객체입니다.

속성타입기본값
name?stringnull
attributesarray[]
beforeInfobooltrue

루트 요소를 생략하려면 name을 null 또는 빈 문자열로 설정하십시오. 피드 정보를 루트 앞에 쓰려면 beforeInfo를 false로 설정하십시오.

생성 결과​

GeneratorService::feed()는 GenerationResultData를 반환합니다. 읽기 전용 paths 속성에는 게시된 파일이 출력 순서대로 들어 있습니다. records는 각 경로를 해당 파일에 기록된 레코드 수와 연결합니다.

프로그래밍 방식의 생성 및 등록 메서드는 런타임 서비스 및 계약에 정리되어 있습니다.

FeedFormatEnum​

케이스값
Xmlxml
Jsonjson
JsonLinesjsonl
Csvcsv
Rssrss

관련 문서​