Files
productalert/app/Models/Post.php
2023-07-30 16:59:30 +08:00

102 lines
2.2 KiB
PHP

<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use AlAminFirdows\LaravelEditorJs\Facades\LaravelEditorJs;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class Post
*
* @property int $id
* @property string|null $title
* @property string|null $slug
* @property string|null $excerpt
* @property int|null $author_id
* @property string $featured_image
* @property string $editor
* @property array|null $body
* @property string $post_format
* @property int $comment_count
* @property int $likes_count
* @property string $status
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property Author|null $author
* @property Collection|PostCategory[] $post_categories
*/
class Post extends Model
{
protected $table = 'posts';
protected $casts = [
'author_id' => 'int',
'body' => 'json',
'comment_count' => 'int',
'likes_count' => 'int',
'featured' => 'bool',
];
protected $fillable = [
'title',
'slug',
'excerpt',
'author_id',
'featured_image',
'editor',
'body',
'post_format',
'comment_count',
'likes_count',
'status',
'featured',
'publish_date',
];
protected $appends = [
//'html_body',
];
public function author()
{
return $this->belongsTo(Author::class);
}
public function post_categories()
{
return $this->hasMany(PostCategory::class);
}
public function post_category()
{
return $this->hasOne(PostCategory::class);
}
public function getHtmlBodyAttribute()
{
if (! is_empty($this->body)) {
return LaravelEditorJs::render(json_encode($this->body));
}
return '';
}
public function getFeaturedImageLqipAttribute()
{
$featuredImage = $this->featured_image;
// Get the extension of the original featured image
$extension = pathinfo($featuredImage, PATHINFO_EXTENSION);
// Append "_lqip" before the extension to create the LQIP image URL
return str_replace(".{$extension}", "_lqip.{$extension}", $featuredImage);
}
}