$array) * @method static where(string $string, string $url) * @method static create(array $array) * * @property int $id * @property int $feed_id * @property Feed $feed * @property string $url * @property string $title * @property string|null $description * @property string $publish_status * @property Carbon|null $validated_at * @property Carbon $created_at * @property Carbon $updated_at * @property ArticlePublication|null $articlePublication */ class Article extends Model { /** @use HasFactory */ use HasFactory; protected $fillable = [ 'feed_id', 'url', 'title', 'description', 'content', 'image_url', 'published_at', 'author', 'validated_at', 'publish_status', ]; /** * @return array */ public function casts(): array { return [ 'publish_status' => 'string', 'published_at' => 'datetime', 'validated_at' => 'datetime', 'created_at' => 'datetime', 'updated_at' => 'datetime', ]; } public function getIsPublishedAttribute(): bool { return $this->articlePublication()->exists(); } /** * @return HasOne */ public function articlePublication(): HasOne { return $this->hasOne(ArticlePublication::class); } /** * @return HasMany */ public function articlePublications(): HasMany { return $this->hasMany(ArticlePublication::class); } /** * @return BelongsTo */ public function feed(): BelongsTo { return $this->belongsTo(Feed::class); } /** * @return HasMany */ public function routeArticles(): HasMany { return $this->hasMany(RouteArticle::class); } public function dispatchFetchedEvent(): void { event(new NewArticleFetched($this)); } }