Initial commit: Animexe Laravel platform

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 00:01:48 +03:00
co-authored by Claude Opus 4.8
commit a63515cfc6
366 changed files with 74773 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
<?php
namespace App\Models;
use App\Support\MediaUrl;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Str;
class BlogPost extends Model
{
protected $fillable = [
'title', 'slug', 'excerpt', 'content', 'cover_image',
'focus_keyword', 'meta_title', 'meta_description', 'meta_keywords',
'status', 'ai_generated', 'anime_id', 'linked_anime_ids', 'faq',
'views', 'reading_time', 'published_at',
];
protected $casts = [
'linked_anime_ids' => 'array',
'faq' => 'array',
'ai_generated' => 'boolean',
'published_at' => 'datetime',
];
public function getCoverUrlAttribute(): ?string
{
return MediaUrl::fromStoragePath($this->cover_image);
}
public function anime(): BelongsTo
{
return $this->belongsTo(Anime::class);
}
public function scopePublished($q)
{
return $q->where('status', 'published')->whereNotNull('published_at');
}
public function getReadableTimeAttribute(): string
{
return $this->reading_time . ' dk okuma';
}
public static function generateSlug(string $title): string
{
$slug = Str::slug($title, '-', 'tr');
$base = $slug;
$i = 1;
while (static::where('slug', $slug)->exists()) {
$slug = $base . '-' . $i++;
}
return $slug;
}
}