You've already forked Epicnabbo-Catalogus-Updated-Daily
🆙 More fixes 🆙
This commit is contained in:
@@ -6,12 +6,15 @@ use App\Models\Articles\WebsiteArticleComment as ArticleComment;
|
||||
use App\Models\Articles\WebsiteArticleReaction as ArticleReaction;
|
||||
use App\Models\Articles\Tag;
|
||||
use App\Models\Compositions\HasNotificationUrl;
|
||||
use App\Models\User;
|
||||
use Auth;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||
use Str;
|
||||
|
||||
class Article extends Model
|
||||
@@ -31,25 +34,21 @@ class Article extends Model
|
||||
static::creating(function (Article $article): void {
|
||||
$article->user_id = Auth::id();
|
||||
$article->slug = Str::slug($article->title);
|
||||
$article->predominant_color = getPredominantImageColor($article->image);
|
||||
});
|
||||
|
||||
static::updating(function (Article $article): void {
|
||||
$article->slug = Str::slug($article->title);
|
||||
|
||||
if ($article->isDirty('image')) {
|
||||
$article->predominant_color = getPredominantImageColor($article->image);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function syncPaginatedComments(): void
|
||||
{
|
||||
$this->setRelation('comments',
|
||||
$this->comments()->defaultRelationships()->paginate(10)->fragment('comments'),
|
||||
);
|
||||
$this->setRelation('comments', $this->comments()->paginate(10)->fragment('comments'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Builder<Article>
|
||||
*/
|
||||
public static function fromIdAndSlug(string $id, string $slug, bool $withDefaultRelationships = true): Builder
|
||||
{
|
||||
return Article::valid()
|
||||
@@ -74,6 +73,9 @@ class Article extends Model
|
||||
return $article;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Builder<Article>
|
||||
*/
|
||||
public static function forIndex(int $limit): Builder
|
||||
{
|
||||
return Article::valid()
|
||||
@@ -84,38 +86,50 @@ class Article extends Model
|
||||
}
|
||||
|
||||
#[\Illuminate\Database\Eloquent\Attributes\Scope]
|
||||
protected function valid(Builder $query): void
|
||||
protected function valid(Builder $query): Builder
|
||||
{
|
||||
$query->whereVisible(true);
|
||||
return $query->whereVisible(true);
|
||||
}
|
||||
|
||||
#[\Illuminate\Database\Eloquent\Attributes\Scope]
|
||||
protected function defaultRelationships(Builder $query): void
|
||||
protected function defaultRelationships(Builder $query): Builder
|
||||
{
|
||||
$query->with([
|
||||
return $query->with([
|
||||
'user:id,username,look,gender',
|
||||
'tags',
|
||||
'reactions' => fn ($query) => $query->defaultRelationships(),
|
||||
'reactions',
|
||||
'user.followers',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return HasMany<ArticleComment, $this>
|
||||
*/
|
||||
public function comments(): HasMany
|
||||
{
|
||||
return $this->hasMany(ArticleComment::class)->defaultBehavior();
|
||||
return $this->hasMany(ArticleComment::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return HasMany<ArticleReaction, $this>
|
||||
*/
|
||||
public function reactions(): HasMany
|
||||
{
|
||||
return $this->hasMany(ArticleReaction::class)->defaultBehavior();
|
||||
return $this->hasMany(ArticleReaction::class);
|
||||
}
|
||||
|
||||
public function user()
|
||||
/**
|
||||
* @return BelongsTo<User, $this>
|
||||
*/
|
||||
public function user(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
public function tags(): \Illuminate\Database\Eloquent\Relations\MorphToMany
|
||||
/**
|
||||
* @return MorphToMany<Tag, $this>
|
||||
*/
|
||||
public function tags(): MorphToMany
|
||||
{
|
||||
return $this->morphToMany(Tag::class, 'taggable');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user