From 70d71034e8fa61cffcb892da16fda5a367ab6f4d Mon Sep 17 00:00:00 2001 From: Remco Date: Mon, 19 Jan 2026 21:14:18 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=86=99=20More=20fixes=20=F0=9F=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Updated_Cms/app/Models/Article.php | 43 +++++++++++++++++++----------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/Updated_Cms/app/Models/Article.php b/Updated_Cms/app/Models/Article.php index c6a4930f90..06b237b330 100644 --- a/Updated_Cms/app/Models/Article.php +++ b/Updated_Cms/app/Models/Article.php @@ -10,7 +10,6 @@ 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; @@ -19,7 +18,6 @@ use Str; class Article extends Model { - use HasFactory; use HasNotificationUrl; protected $guarded = []; @@ -32,7 +30,8 @@ class Article extends Model parent::boot(); static::creating(function (Article $article): void { - $article->user_id = Auth::id(); + $id = Auth::id(); + $article->user_id = is_numeric($id) ? (int) $id : null; $article->slug = Str::slug($article->title); }); @@ -51,18 +50,22 @@ class Article extends Model */ public static function fromIdAndSlug(string $id, string $slug, bool $withDefaultRelationships = true): Builder { - return Article::valid() - ->when($withDefaultRelationships, fn ($query) => $query->defaultRelationships()) - ->whereId($id) - ->whereSlug($slug); + $query = Article::query()->valid(); + if ($withDefaultRelationships) { + $query = $query->defaultRelationships(); + } + + return $query->whereId($id)->whereSlug($slug); } public static function getLatestValidArticle(bool $withDefaultRelationships = true): ?Article { - $article = Article::valid() - ->when($withDefaultRelationships, fn ($query) => $query->defaultRelationships()) - ->latest() - ->first(); + /** @var Article|null $article */ + $article = Article::query()->valid(); + if ($withDefaultRelationships) { + $article = $article->defaultRelationships(); + } + $article = $article->latest()->first(); if (! $article) { return null; @@ -78,21 +81,29 @@ class Article extends Model */ public static function forIndex(int $limit): Builder { - return Article::valid() + $query = Article::query()->valid(); + + return $query ->with(['user:id,username,look,avatar_background']) ->select(['id', 'user_id', 'title', 'slug', 'is_promotion', 'image', 'description', 'promotion_ends_at', 'created_at', 'fixed']) ->limit($limit) ->latest(); } - #[\Illuminate\Database\Eloquent\Attributes\Scope] - protected function valid(Builder $query): Builder + /** + * @param Builder
$query + * @return Builder
+ */ + public function scopeValid(Builder $query): Builder { return $query->whereVisible(true); } - #[\Illuminate\Database\Eloquent\Attributes\Scope] - protected function defaultRelationships(Builder $query): Builder + /** + * @param Builder
$query + * @return Builder
+ */ + public function scopeDefaultRelationships(Builder $query): Builder { return $query->with([ 'user:id,username,look,gender',