You've already forked Epicnabbo-Catalogus-Updated-Daily
🆙 More fixes 🆙
This commit is contained in:
@@ -10,7 +10,6 @@ use App\Models\User;
|
|||||||
use Auth;
|
use Auth;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Casts\Attribute;
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
@@ -19,7 +18,6 @@ use Str;
|
|||||||
|
|
||||||
class Article extends Model
|
class Article extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
|
||||||
use HasNotificationUrl;
|
use HasNotificationUrl;
|
||||||
|
|
||||||
protected $guarded = [];
|
protected $guarded = [];
|
||||||
@@ -32,7 +30,8 @@ class Article extends Model
|
|||||||
parent::boot();
|
parent::boot();
|
||||||
|
|
||||||
static::creating(function (Article $article): void {
|
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);
|
$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
|
public static function fromIdAndSlug(string $id, string $slug, bool $withDefaultRelationships = true): Builder
|
||||||
{
|
{
|
||||||
return Article::valid()
|
$query = Article::query()->valid();
|
||||||
->when($withDefaultRelationships, fn ($query) => $query->defaultRelationships())
|
if ($withDefaultRelationships) {
|
||||||
->whereId($id)
|
$query = $query->defaultRelationships();
|
||||||
->whereSlug($slug);
|
}
|
||||||
|
|
||||||
|
return $query->whereId($id)->whereSlug($slug);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getLatestValidArticle(bool $withDefaultRelationships = true): ?Article
|
public static function getLatestValidArticle(bool $withDefaultRelationships = true): ?Article
|
||||||
{
|
{
|
||||||
$article = Article::valid()
|
/** @var Article|null $article */
|
||||||
->when($withDefaultRelationships, fn ($query) => $query->defaultRelationships())
|
$article = Article::query()->valid();
|
||||||
->latest()
|
if ($withDefaultRelationships) {
|
||||||
->first();
|
$article = $article->defaultRelationships();
|
||||||
|
}
|
||||||
|
$article = $article->latest()->first();
|
||||||
|
|
||||||
if (! $article) {
|
if (! $article) {
|
||||||
return null;
|
return null;
|
||||||
@@ -78,21 +81,29 @@ class Article extends Model
|
|||||||
*/
|
*/
|
||||||
public static function forIndex(int $limit): Builder
|
public static function forIndex(int $limit): Builder
|
||||||
{
|
{
|
||||||
return Article::valid()
|
$query = Article::query()->valid();
|
||||||
|
|
||||||
|
return $query
|
||||||
->with(['user:id,username,look,avatar_background'])
|
->with(['user:id,username,look,avatar_background'])
|
||||||
->select(['id', 'user_id', 'title', 'slug', 'is_promotion', 'image', 'description', 'promotion_ends_at', 'created_at', 'fixed'])
|
->select(['id', 'user_id', 'title', 'slug', 'is_promotion', 'image', 'description', 'promotion_ends_at', 'created_at', 'fixed'])
|
||||||
->limit($limit)
|
->limit($limit)
|
||||||
->latest();
|
->latest();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[\Illuminate\Database\Eloquent\Attributes\Scope]
|
/**
|
||||||
protected function valid(Builder $query): Builder
|
* @param Builder<Article> $query
|
||||||
|
* @return Builder<Article>
|
||||||
|
*/
|
||||||
|
public function scopeValid(Builder $query): Builder
|
||||||
{
|
{
|
||||||
return $query->whereVisible(true);
|
return $query->whereVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[\Illuminate\Database\Eloquent\Attributes\Scope]
|
/**
|
||||||
protected function defaultRelationships(Builder $query): Builder
|
* @param Builder<Article> $query
|
||||||
|
* @return Builder<Article>
|
||||||
|
*/
|
||||||
|
public function scopeDefaultRelationships(Builder $query): Builder
|
||||||
{
|
{
|
||||||
return $query->with([
|
return $query->with([
|
||||||
'user:id,username,look,gender',
|
'user:id,username,look,gender',
|
||||||
|
|||||||
Reference in New Issue
Block a user