← 이전 · README로 돌아가기 · 다음 →
Eloquent
모델을 저장하면 사용자 정의 제목 세터가 적용된 최종 title 값을 사용하여 SlugCast를 통해 Str::slug(title)을 slug에 자동으로 저장합니다. 사용자 정의 제목 뮤테이터와 saveQuietly()를 지원합니다. 제목을 변경하면 slug도 변경됩니다. 예를 들어 Products는 products가 됩니다. 쿼리 빌더의 대량 업데이트와 삽입은 모델 저장을 거치지 않습니다. 대신 모델의 create(), update() 또는 save()를 사용하십시오.
선택하거나 스케줄에 등록할 피드에는 서로 다르고 비어 있지 않은 slug가 생성되는 제목을 사용하십시오. 정규화 결과 slug가 비어 있는 제목은 선택할 수 없습니다. 삭제되지 않은 등록 정보 여러 개가 같은 slug를 사용하면 조회 시 Illuminate\Database\MultipleRecordsFoundException이 발생하며 접미사는 자동으로 추가되지 않습니다.
사용자 지정 피드 등록 모델
피드 등록 레코드에 추가 열, 캐스트, 관계 또는 메서드가 필요하면 feeds.model을 애플리케이션 모델로 설정하십시오. 사용자 지정 모델은 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',
];
}
}
config/feeds.php에 모델을 등록하십시오.
'model' => App\Models\Feed::class,
애플리케이션 마이그레이션에서 feeds 테이블에 사용자 지정 열을 추가하십시오. 대량 할당을 허용하는 모든 속성을 $fillable에 유지하십시오.
FeedQuery는 생성, 조회, 목록, 업데이트, 삭제 및 복원 작업에 구성된 모델을 사용합니다. 레코드를 생성할 때 애플리케이션별 값은 extra로 전달하십시오. 이 값은 마지막에 적용되며 메서드 인수를 재정의할 수 있습니다.
$feed = app(FeedQuery::class)->create(
class: SomeFeed::class,
title: 'Some',
expression: '0 */12 * * *',
extra: [
'is_foo' => true,
'is_bar' => true,
]
);
애플리케이션 모델에서 일반 Eloquent API를 사용할 수도 있습니다.
use App\Models\Feed;
$feed = Feed::create([
'class' => SomeFeed::class,
'title' => 'Some',
'expression' => '0 */12 * * *',
'is_active' => true,
'is_foo' => true,
'is_bar' => true,
]);
구성된 모델은 런타임에 해석됩니다. 정적 분석은 FeedQuery::create()의 결과를 패키지 기본 모델로 인식합니다. 애플리케이션별 속성의 자동 완성이 필요하면 App\Models\Feed::create() 또는 명시적인 로컬 타입을 사용하십시오.
청크 크기
데이터베이스 쿼리는 기본적으로 1000개 항목 단위의 청크를 사용합니다. chunkSize 메서드를 재정의하여 변경할 수 있습니다.
use DragonCode\LaravelFeed\Feeds\Feed;
class UserFeed extends Feed
{
public function chunkSize(): int
{
return 500;
}
}